gpt4 book ai didi

linux - 如何按路径对linux find命令进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:07 24 4
gpt4 key购买 nike

我正在写一个小的 shell 脚本。我想递归地获取文件的所有路径。为此,我正在使用波纹管代码。

for entry in `find . -type f`; do
echo $entry
done

递归获取文件是可以的。但它不按路径排序。

ex :该文件夹有 1,2,3,rename.sh(shell 脚本)文件和一个名为 test 的文件夹。在该测试文件夹中再次有 1,2,3 个文件。当我执行这段代码时,输​​出是这样的

./rename.sh
./1.png
./test/1.png
./test/2.jpg
./test/3.jpg
./2.jpg
./3.jpg

为什么不按路径排序。我如何按路径对它进行排序,以便输出将是

./rename.sh
./1.png
./2.jpg
./3.jpg
./test/1.png
./test/2.jpg
./test/3.jpg

最佳答案

如果您想要对内容进行排序,自己动手。对于文件列表,这样做安全意味着用 NUL 分隔名称(因此名称中带有换行符的文件不会被读取为两个单独文件的名称,因此在排序过程中分开),并使用 sort -z(GNU 扩展)。

while IFS= read -r -d '' entry; do
printf 'Processing: %s\n' "$entry"
done < <(find . -type f -print0 | sort -z)

参见 Using Find可靠地使用 find 的指南,以及 BashFAQ #1用于讨论此处使用的 while read 构造。

关于linux - 如何按路径对linux find命令进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com