加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 21:31:41 所属栏目:安全 来源:网络整理
导读:我从基本文件夹运行以下./ 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.20042
我从基本文件夹运行以下./

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和sort命令下尝试了几个不同的开关,但没有运气.我总是可以将所有内容复制到一个文件夹并从那里排序,但是有几百个文件,我希望存在一个更优雅的选项.

谢谢!非常感谢您的帮助.

解决方法

find . -name *.xvi.txt | sort -t'.' -k3 -n

会根据你的需要排序.唯一的问题是文件名或目录名是否包含附加点.

为避免它,您可以使用:

find . -name *.xvi.txt | sed 's/[0-9]+.xvi.txt$/&/' | sort -t'' -k2 | sed 's///'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读