Bash

使用 find 列出某個目錄下的所有文件

  • February 17, 2015

我正在嘗試使用單行命令來查找命名的每個目錄(或子目錄)bin,然後列印其下所有文件的列表,但也不會列出它們下的目錄名稱。

我已經嘗試了幾種不同的方法來實現這一點,但到目前為止都沒有奏效:

  1. find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /

我對此進行了測試,它會列出文件,但它也會列出任何 bin 下的目錄。因此,如果我在一個如下所示bin的目錄下有一個bin子目錄:

~/home/
  ~/home/bin
     file1.txt
     ~/home/bin/bin
        file2.txt

輸出看起來像這樣:

bin
file1.txt
file2.txt
  1. find ~ -type d -name "bin" -exec ls -f '{}' ';'

我讀到做ls -f只會列出文件,但不幸的是,這也列出了目錄bin..並且.

那麼我該怎麼做呢?

使用-path,您可以嘗試:

find ~ -path '*/bin/*' -type f

這不會列出bin自己,所以要同時獲得:

find ~ \( -path '*/bin/*' -type f \) -o \( -name bin -type d \)

您可以使用嵌套find呼叫執行此操作:

$ find ~ -type d -name bin -exec find '{}' -type f ';'

由於我正在替換一個電話,也許您不希望在第二個電話ls中列出超過一個級別。find在這種情況下,請-maxdepth 1-type f上面添加。

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