我从基本文件夹运行以下./
find . -name *.xvi.txt | sort
Run Code Online (Sandbox Code Playgroud)
返回以下排序顺序:
./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
Run Code Online (Sandbox Code Playgroud)
如您所见,文件名遵循常规结构,但文件本身可能位于目录结构的不同部分.有没有办法忽略文件夹名称和/或目录结构,以便排序只返回文件名本身的文件夹/文件名列表?像这样:
./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
Run Code Online (Sandbox Code Playgroud)
我在find和sort命令下尝试了几个不同的开关,但没有运气.我总是可以将所有内容复制到一个文件夹并从那里排序,但是有几百个文件,我希望存在一个更优雅的选项.
谢谢!非常感谢您的帮助.
如果你find有,-printf你可以打印基本文件名和完整的文件名.按第一个字段排序,然后将其剥离.
find . -name '*.xvi.txt' -printf '%f %p\n' | sort -k1,1 | cut -f 2- -d ' '
Run Code Online (Sandbox Code Playgroud)
我选择了一个空格作为分隔符.如果您的文件名包含空格,则应选择另一个分隔符,该分隔符是不在您的文件名中的字符.如果任何文件名包含换行符,则必须修改它,因为它不起作用.
请注意,find应引用命令中的glob .
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |