Rename
重命名數百個非空目錄
作業系統是美分 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 實際上是一個掛載點,或者一個符號連結而不是實際目錄,或者其他引用這個目錄結構的東西,你重新-設計。
所以它可能比簡單的重命名要復雜得多,這取決於。
但是,如果您要問這些問題,則您的問題並不清楚。