從路徑中刪除子目錄並將檔案提升到父目錄

從路徑中刪除子目錄並將檔案提升到父目錄

我有一堆文件,它們的路徑中包含一個重複的資料夾(在下面的範例中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 的建議參數擴充,如果這是一個更優雅的解決方案,我會很感興趣。

相關內容