在Linux中使用cp时如何避免'是同一个文件'的警告信息?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (150)

我试图将某个文件从一个目录复制到另一个目录。使用这个命令:

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"

如果它不是关于生成的文件,请尝试使用-u选项cp:

find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -ut "$HOME/newdir"

扫码关注云+社区

领取腾讯云代金券