我在linux的shell中写了一个命令来统计目录/bin中以'c'开头的文件(总共8个)
find /bin/[c]* -type f | wc -l
我现在想做的是将前 7 个文件的名称保存在文本文件中,但我找不到正确的命令来加入我的管道。
答案1
find /bin/[c]* -type f | head -n 7 > textfile
答案2
如果您的意思是按字母顺序排列的前 7 个,则zsh
:
printf '%s\n' /bin/c*(.[1,7]) > list.txt
如果你的意思是
- 7 个最旧的,添加
Om
glob 限定符 (c*(.Om[1,7])
) - 7 个最新的,添加
om
glob 限定符 - 7 个最小的:
oL
- 7最大:
OL
请注意,在 中find /bin/[c]*
,shell 扩展了该 glob 并将结果文件(按字母顺序排序)作为单独的参数传递给find
。
请注意,如果这些文件中的任何一个是目录,find
则将开始深入其中并列出其内容(以未指定的顺序)
你想要:
find /bin/c* -prune -type f | head -n 7 > file.txt
哪里-prune
是防止find
下降到任何目录。但请注意,head
只有当文件名不包含换行符时,使用这种方法才有效(很可能是这种情况,/bin
但在一般情况下不能保证)。