オペレーティングシステムはCentos 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/
するディレクトリの下のユーザーとコンテンツは不明で多様です。既存のすべてのディレクトリ構造は空ではありません。
各ディレクトリの内外にファイルを手動で移動しなくても、この作業を簡潔に行う方法が見つからず、誰かがより効率的な方法を知ることができることを願っています。
答え1
ただ名前を変更しますか?
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が実際にマウントポイント、物理ディレクトリではなくシンボリックリンク、または再構築中のこのディレクトリ構造を参照している場合など、特別な場合はそれらのいずれも扱いません。他のコンテンツでは、何が起こるように設計されています。
したがって、状況によっては、単純な名前変更よりも複雑になる可能性があります。
しかし、このように尋ねると、質問は明確ではありません。
答え2
これは働きます:
find /tmp -depth -type d -name webapp -exec sh -c 'mv "${0}" "${0%/webapp}/new_webapp"' {} \;