Bash
如何使用 bash 檢索目錄中的文件夾名稱
我正在嘗試獲取另一個文件夾中的文件夾名稱。我試圖使用下面的程式碼,但問題是它返回文件夾的完整地址,而不僅僅是文件夾名稱
for folder in /[my folder]/*; do cat $folder; done
有了這個,我得到
/[my folder]/subfolder1
了,我所期望的只是subfolder1
.謝謝
cat
是一個簡單地獲取其輸入流或文件並將其列印到標準輸出的程序。你不能cat
一個目錄,那沒有意義。如果您只想查看給定目錄的所有第一級子目錄的名稱,您可以使用echo
which 簡單地列印您給它的內容:$ for dir in foo/*/; do echo "$dir"; done foo/dir1/ foo/dir2/ foo/dir3/ foo/dir4/
你甚至不需要循環:
$ echo foo/*/ foo/dir1/ foo/dir2/ foo/dir3/ foo/dir4
要僅獲取目錄名稱,而不獲取路徑:
$ for dir in foo/*/; do basename "$dir"; done dir1 dir2 dir3 dir4
或者,您可以
cd
到路徑:$ cd foo $ echo */ dir1/ dir2/ dir3/ dir4/
或者
cd
在一個子shell中,這樣當命令完成時你就留在原來的位置:$ ( cd foo && echo */ ) dir1/ dir2/ dir3/ dir4/
或者,將它們放在單獨的行上,並確保即使在奇怪的目錄名稱(例如,包含換行符的名稱)上也能正常工作:
$ ( cd foo && printf -- '%s\n' */ ) dir1/ dir2/ dir3/ dir4/
最後,如果您的目錄名稱可能包含換行符或其他奇怪的內容,請使用: