gpt4 book ai didi

bash - 强制排序命令忽略文件夹名称

转载 作者:行者123 更新时间:2023-11-29 09:10:29 26 4
gpt4 key购买 nike

我从基本文件夹 ./运行了以下命令

find . -name *.xvi.txt | sort

返回以下排序顺序:

./LT/filename.2004167.xvi.txt
./LT/filename.2004247.xvi.txt
./pred/2004186/filename.2004186.xvi.txt
./pred/2004202/filename.2004202.xvi.txt
./pred/2004222/filename.2004222.xvi.txt

如您所见,文件名遵循规则结构,但文件本身可能位于目录结构的不同部分。有没有办法忽略文件​​夹名称和/或目录结构,以便排序返回仅基于文件名本身的文件夹/文件名列表?像这样:

./LT/filename.2004167.xvi.txt
./pred/2004186/filename.2004186.xvi.txt
./pred/2004202/filename.2004202.xvi.txt
./pred/2004222/filename.2004222.xvi.txt
./LT/filename.2004247.xvi.txt

我在查找和排序命令下尝试了几个不同的开关,但没有成功。我总是可以将所有内容复制到一个文件夹并从那里排序,但有数百个文件,我希望存在更优雅的选项。

谢谢!感谢您的帮助。

最佳答案

如果您的find-printf,您可以打印基本文件名和完整文件名。按第一个字段排序,然后将其删除。

find . -name '*.xvi.txt' -printf '%f %p\n' | sort -k1,1 | cut -f 2- -d ' '

我选择了一个空格作为分隔符。如果您的文件名包含空格,您应该选择另一个分隔符,它是一个不在您的文件名中的字符。如果任何文件名包含换行符,您将必须修改它,因为它不起作用。

注意 find 命令中的 glob 应该被引用。

关于bash - 强制排序命令忽略文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415030/

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