在Mac终端上将多个文件从一个目录复制到另一个目录时,可以自动将文件名附加数值递增吗?

我试图在终端中使用单行命令在计算机的一个目录中查找某种类型的所有文件并将其复制到另一目录。我现在可以使用以下命令执行此操作:

find ./ -name '*.fileType' -exec cp -prv '{}' '/destination_directory/' ';' 

我遇到的问题是,如果要复制的文件与先前复制的文件具有相同的名称,它将替换先前复制的文件。

要解决此问题,我想编辑命令,以便在复制文件到新目录时对文件进行编号。

所以输出应如下所示:

原始文件

cat.txt dog.txt dog.txt

复制的文件

cat1.txt dog2.txt dog3.txt

编辑:

我可以使用的命令列表链接在这里:https://ss64.com/osx/

专门用于cp命令:https://ss64.com/osx/cp.html

-注意:--backup-b在此版本的cp中不可用

wing_wx 回答:在Mac终端上将多个文件从一个目录复制到另一个目录时,可以自动将文件名附加数值递增吗?

您正在寻找--backup命令的cp选项。例如:

find ./ -name '*.fileType' -exec cp --backup=t -prv '{}' '/destination_directory/' ';'

编辑:如果您坚持使用MacOS的cp,则可以在脚本中模拟--backup的行为:

#!/bin/bash
set -e
# First parameter: source directory   
srcdir=$1
# Second parameter: destination directory
destdir=$2

# Print all filenames separated by '\0' in case you have strange
# characters in the names
find "$srcdir" -type f -print0 |
# Split the input using '\0' as separator and put the current line
# into the $file variable
while read -d $'\0' file; do
  # filename = just the name of the file,without dirs
  filename=$(basename "$file")
  # if destdir does not have a file named filename
  if [ \! -f "$destdir/$filename" ]; then
    cp -pv "$file" "$destdir/$filename";
    continue;
  fi
  # Otherwise
  suffix=1
  # Find the first suffix number that is free
  while [ -f "$destdir/$filename.$suffix" ]; do
    suffix=$(($suffix + 1))
  done
  cp -pv "$file" "$destdir/$filename.$suffix"
done 
本文链接:https://www.f2er.com/3127192.html

大家都在问