Find

在以c開頭的目錄/bin中的前7個文件保存在一個文件中

  • December 30, 2018

我在linux的shell中寫了一個命令來計算目錄/bin中以’c’開頭的文件(總共8個)

find /bin/[c]* -type f | wc -l 

我現在想做的是將前 7 個文件的名稱保存在一個文本文件中,但我找不到正確的命令來加入我的管道。

find /bin/[c]* -type f | head -n 7 > textfile 

如果您指的是按字母順序排列的前 7 個,則zsh

printf '%s\n' /bin/c*(.[1,7]) > list.txt

如果你的意思是

  • 7 個最舊的,添加Omglob 限定符 ( c*(.Om[1,7]))
  • 7 個最新的,添加omglob 限定符
  • 最小的 7 個:oL
  • 7大:OL

請注意,在 中find /bin/[c]*,擴展該 glob 並將生成的文件(按字母順序排序)作為單獨的參數傳遞給find.

請注意,如果這些文件中的任何一個是目錄,find將開始進入它們並列出它們的內容(以未指定的順序)

你會想要:

find /bin/c* -prune -type f | head -n 7 > file.txt

where -pruneis 防止find下降到任何目錄。但請注意,head僅當文件名不包含換行符時才使用這種方式(很可能是這種情況,/bin但在一般情況下不能保證)。

引用自:https://unix.stackexchange.com/questions/491649