如何限制命令 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 ..
以下命令:
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 ..