我有大约50K文件是一个目录(Linux操作系统),他们的命名约定为USER_ID.ORACLE_JOB_ID.SEQUENCED_NUMBER.pdf
我需要在文本文件中列出所有唯一的ORACLE_JOB_ID.如何才能做到这一点?
PS:忘记提及同一目录中有一些其他文件有不同的命名约定,我必须避免它们.
谢谢!
示例:1.6778390.done 2.o6778390.out 3.AWRX_GBL_FAR1.98567432.4.dat.xml 4.AWRX_GBL_FAR1.34789214.4.pdf
ls | awk 'BEGIN{FS="."}{ print $2 }' | sort | uniq > file.txt
Run Code Online (Sandbox Code Playgroud)
ls 获取当前目录中所有文件名的列表
awk 通过字段分隔符"."分割每个文件名,仅打印第二个字段
sort 排序第二个字段
uniq 删除连续相同的行
编辑:如果你想使用.pdf限制当前目录中的文件:
find . -iname '*.pdf' | awk 'BEGIN{FS="."}{ print $3 }' | sort | uniq > file.txt
Run Code Online (Sandbox Code Playgroud)
使用ls *.pdf当前dir中有很多pdf时会将参数溢出ls,如错误所示,因为它相当于调用ls50K不同的命令行参数,溢出ARGV.
| 归档时间: |
|
| 查看次数: |
5563 次 |
| 最近记录: |