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

Mat*_*upp 23 linux bash copy cp

我正在尝试将某些文件从一个目录复制到另一个目录.使用此命令

find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -t $HOME/newdir
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息

cp:'/ home/me/newdir/logfile.txt'和'/home/me/newdir/logfile.txt'是同一个文件

如何避免此警告消息?

use*_*001 17

问题是您尝试将文件复制到自身.您可以通过从find命令的结果中排除目标目录来避免它,如下所示:

find "$HOME" -name '*.txt' -type f -not -path "$HOME/newdir/*" -print0 | xargs -0 cp -t "$HOME/newdir" 
Run Code Online (Sandbox Code Playgroud)