![列出特定子目錄中的文件](https://rvso.com/image/1558685/%E5%88%97%E5%87%BA%E7%89%B9%E5%AE%9A%E5%AD%90%E7%9B%AE%E9%8C%84%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一個像這樣的資料夾結構:
/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e
我想列出“a”資料夾中子資料夾中所有文件的文件+文件大小。我嘗試過使用 find 但被卡住了。正確的命令是什麼?
答案1
若要列印尺寸和完整路徑,請嘗試此操作。
find /[123]/a/* -type f -printf '%s %p\n'
看man find
對於其他格式字串,您可以使用-printf
.特別是,您可能想要%P
or%f
代替%p
,也許%b
代替%s
。
[123]
符合 1-3 範圍內的單一數字的名稱;如果您的範例與您試圖描述的現實不完全一致,也許可以將其擴展到*
或更受限制的東西。
GNUfind
應該是 CentOS 上的標準,但如果您需要適當的可移植程式碼,也許可以使用find ... -exec stat {} \;
(但請注意,它stat
也存在可移植性問題;該命令應該存在於大多數平台上,但如何準確地讓它列印特定的內容因實現而異)。另一個選擇是find ... -ls
,但你會面臨解析ls
.
如果不需要遍歷子目錄,則不需要find
.
stat -c '%s %n\n' /[123]/a/*/*