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

时间:2015-02-09 15:52:37

标签: bash find

以下命令:

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

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

如果我认为结果不超过例如400?我怎么能?

2 个答案:

答案 0 :(得分:11)

你可以这样做:

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

如果您想使用echo模拟它的作用:

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

答案 1 :(得分:0)

例如,您可以将find输出提供给while read循环并跟踪计数器:

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

请注意,如果文件名包含新行,则可能会出现问题...这种情况不太可能发生。另请注意,mv命令现在正在向上移动。如果你想让它与dir的路径相关,那么一些bash转换可以实现它。