如何限制命令 find in bash 的结果?

How do I limit the results of the command find in bash?

以下命令:

find . -name "file2015-0*" -exec mv {} .. \;

影响大约 1500 个结果。他们一个一个地移动到上一个级别。

如果我希望结果不超过例如 400?我怎么能?

例如,您可以将 find 输出提供到 while read 循环中并使用计数器进行跟踪:

counter=1
while IFS= read -r file
do
   [ "$counter" -ge 400 ] && exit
   mv "$file" ..
   ((counter++))
done < <(find . -name "file2015-0*")

请注意,如果文件名包含新行,这可能会导致问题...这不太可能。另外,请注意 mv 命令现在移至上层。如果你想让它与目录的路径相关,一些bash转换就可以做到。

你可以这样做:

 find . -name "file2015-0*" | head -400 | xargs -I filename mv  filename ..

如果你想模拟它的用途echo

 find . -name "file2015-0*" | head -400 | xargs -I filename echo mv  filename ..