我有一堆文件,它們的路徑中包含一個重複的資料夾(在下面的範例中bar
)。我想刪除此目錄並將 contains 中的所有內容移至父目錄中。為了使用搜尋和替換作為比喻,我想在路徑中替換/foo/
為。/
初始狀態:
foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt
目標:
foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt
我傾向於使用 bash 來解決這個問題,但也願意接受任何沒有任何依賴項並且可以在 Linux 上運行的解決方案。
如果這對偶然發現此線程的任何人有幫助,則有Windows 的現有答案使用機器人複製。
答案1
我最終像這樣解決了這個問題:
for iteration_path in ${1}/*; do
if [[ ! -z $iteration_path ]]; then
mv "${iteration_path}"/bar/* "${iteration_path}";
rmdir "${iteration_path}"/bar;
fi
done
如果有人可以擴展 AFH 的建議參數擴充,如果這是一個更優雅的解決方案,我會很感興趣。