Rename

重命名數百個非空目錄

  • July 18, 2019

作業系統是美分 7

我已經找了幾天了,覺得我現在應該已經找到了一些東西。

我有成百上千的目錄,如下所示:

/tmp/user1/app/webapp/foo/bar.txt
/tmp/user2/app/webapp/etc/bar1.txt
/tmp/user3/app/webapp/whatever/bar2.txt
/tmp/user4/app/webapp/sure/bar3.txt

我需要將“webapp”更改為“new_webapp”

/tmp/和都是/app/不變的,但是要重命名的目錄下的使用者和內容是未知的和變化的。每個現有的目錄結構都不是空的。

我還沒有找到一種方法來簡潔地做到這一點,而無需手動遍歷每個目錄,並且費力地在目錄中進出文件,我希望有人可能知道更有效的方法。

只是重命名它們?

使用 util-linux 重命名:

rename -v webapp new_webapp /tmp/user*/app/webapp

使用查找(可變深度):

find /tmp -depth -type d -name "webapp" -execdir mv webapp new_webapp \;

帶有 mv 的 for 循環:

for path in /tmp/user*/app/
do
   mv -v "$path"/webapp "$path"/new_webapp
done

這些都沒有涵蓋任何特殊情況,例如如果 new_webapp 已經存在(錯誤檢查/衝突解決),webapp 實際上是一個掛載點,或者一個符號連結而不是實際目錄,或者其他引用這個目錄結構的東西,你重新-設計。

所以它可能比簡單的重命名要復雜得多,這取決於。

但是,如果您要問這些問題,則您的問題並不清楚。

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