我试图从一个目录复制某些文件到另一个。 使用这个命令
find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -t $HOME/newdir
我收到一条警告信息
cp:'/home/me/newdir/logfile.txt'和'/home/me/newdir/logfile.txt'是同一个文件
如何避免这个警告信息?
问题是你试图复制一个文件到自己。 您可以通过从find命令的结果中排除目标目录来避免它,如下所示:
find "$HOME" -name '*.txt' -type f -not -path "$HOME/newdir/*" -print0 | xargs -0 cp -t "$HOME/newdir"
在过程中使其独特。 但是这需要排序
find "$HOME" -name '*.txt' -type f -print0 | sort -zu | xargs -0 cp -t "$HOME/newdir"
或者,如果不是关于生成的文件,请尝试使用cp
的-u
选项。
find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -ut "$HOME/newdir"
-u仅当源文件比目标文件或时更新时复制 目标文件丢失