find 命令还包括结果中的当前目录,无需移动

find 命令还包括结果中的当前目录,无需移动

我正在尝试编写一个脚本,在其中可以找到大于特定大小的文件,然后将它们移动到另一个目录,但 find 命令还包括结果中的当前目录,不需要移动以下是我编写的命令和我收到的消息

$ find -size +2000c -print0 | while IFS= read -r -d $'\0' file; do mv $file ~/wrkbnch; done

mv: cannot move '.' to '/home/jerry/wrkbnch/.': Device or resource busy

答案1

如果您正在寻找文件,请务必find用以下方式告知-type f

find . -type f -size +2000c -exec mv {} "$HOME/wrkbnch" ';'

你的代码:

find -size +2000c -print0 |
while IFS= read -r -d $'\0' file; do
    mv $file ~/wrkbnch
done

这里缺少的两件事是

  1. -type f对于find, 和
  2. 双引号用于$file处理奇异的文件名(例如*)。

有关 的信息IFS= read -r,请参阅“理解“IFS=读取-r行”吗?“(您通过专门指定分隔符来处理大多数此类问题)。

相关内容