Rename

將第三級目錄重命名為同名

  • June 16, 2021

我有一個目錄 A,其中包含一百個子目錄。這些子目錄中的每一個都包含一個目錄。

例如,如何將一百個目錄中的每個目錄中的這個單個目錄重命名為相同的名稱X?我已經嘗試了該mmv命令,但沒有運氣。

任何幫助,將不勝感激!

也許是更好的方法,但是:

使用bashfind

while IFS= read -r dir; do
   mv -- "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)

首先進行測試執行,例如:

while IFS= read -r dir; do
   printf 'mv "%s" "%s"\n' "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)

簡而言之:

  • find
    • .目前目錄作為基礎(通常A在您的情況下)
    • type d(目錄)最小和最大深度為 2
  • bash閱讀並移至 $dir_find``$dir
    • ${dir%/*}刪除最後/和之後的所有內容

      • /X附加新的目錄名稱。

例如find ./A ...,如果您居住在 A 級以下,則使用等。

(可選)添加-vmv(非 POSIX)以顯示所採取的操作。

引用自:https://unix.stackexchange.com/questions/654452