-1
我閱讀了很多關於如何遍歷目錄的子文件夾的答案,但是我看到所有這些答案僅用於循環一個級別或2個級別。是否有可能遍歷文件夾的所有子目錄?考慮一個目錄,比如說dir1。在dir1中有dir2和dir3。在dir2中有dir4,在dir3中有dir5。在dir4中有dir6和dir7,在dir5中有dir8和dir9等,讓我們考慮「無限子文件夾」。有沒有什麼方法可以遍歷dir1的所有級別?遍歷路徑的所有子文件夾
我閱讀了很多關於如何遍歷目錄的子文件夾的答案,但是我看到所有這些答案僅用於循環一個級別或2個級別。是否有可能遍歷文件夾的所有子目錄?考慮一個目錄,比如說dir1。在dir1中有dir2和dir3。在dir2中有dir4,在dir3中有dir5。在dir4中有dir6和dir7,在dir5中有dir8和dir9等,讓我們考慮「無限子文件夾」。有沒有什麼方法可以遍歷dir1的所有級別?遍歷路徑的所有子文件夾
使用一個遞歸函數
function run_path {
# by default current dir
local current=${1:-.}
local subdir
# removing trailing/if any
current=${current%/}
# do something
echo "$current"
for subdir in "$current"/*/; do
# filtering non-existing file for example '*' not expanded
[[ ! -e $subdir ]] && continue;
# recursive call
run_path "$subdir"
done
}
run_path "<<path_to_run>>"
另一個版本包括「隱藏」的文件夾(其與開始。) 在這種情況下。和...必須排除 也不處理符號鏈接,可能會被排除以避免循環。
function run_path {
# by default current dir
local current=${1:-.}
local subdir
# removing trailing/if any
current=${current%/}
# do something
echo "$current"
for subdir in "$current"/*/ "$current"/.*/; do
# filtering non-existing file for example '*' not expanded
[[ ! -e $subdir || $subdir = */../ || $subdir = */./ ]] && continue;
# recursive call
run_path "$subdir"
done
}
與代碼交談。 –
是的,這是可能的。 –
如果你不想寫一個腳本,你可以使用「查找」。像這樣:find。 -maxdepth 3 -mindepth 1。你可以定義你的maxdepth –