为什么 while 不能在与 find 相同的 shell 脚本中工作?

为什么 while 不能在与 find 相同的 shell 脚本中工作?

我有以下代码,它需要找到所有大于 10 KB 的文件并将它们移动到另一个目录中:

read mam
find "$mam" -type f -size +10k > size.txt
while read line
do
    mv "$line" /home/patakinorbert/Desktop/prk1
done < size.txt

答案1

您不需要 shell 脚本。单个find命令将搜索文件并移动它们:

read -r mam
find "$mam" -type f -size +10k -exec mv {} /home/patakinorbert/Desktop/prk1 \;

-exec和之间的单词\;是对找到的每个文件执行的命令,其中{}替换为找到的文件的名称。

在 Linux 系统中,例如 Ubuntu,或任何使用 GNU 工具的系统,此命令的更有效版本是:

read -r mam
find "$mam" -type f -size +10k -exec mv -t /home/patakinorbert/Desktop/prk1 +

这更有效,因为它使用一次调用来移动多个文件mv

相关内容