Bash
使用 find 列出某個目錄下的所有文件
我正在嘗試使用單行命令來查找命名的每個目錄(或子目錄)
bin
,然後列印其下所有文件的列表,但也不會列出它們下的目錄名稱。我已經嘗試了幾種不同的方法來實現這一點,但到目前為止都沒有奏效:
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
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
上面添加。