次のように、親フォルダ内にサブフォルダのリストがあります。
Parent folder
folder1
foldera
folder2
folderb
folder3
folderc
サブフォルダ名から最後の2文字を削除して、2番目のレベルのサブフォルダ名を変更したいと思います。どうすればいいですか?私は次のことを試しました
find . -depth -type d -exec sh -c 'mv "${0}" "${0%??}"' {} \;
しかし、成功しませんでした。
ベストアンサー1
いいえ。次のディレクトリ構造を考慮すると、find
pureと一緒に使用できます。bash
./folder3
./folder3/folderc
./folder2
./folder2/folderb
./folder1
./folder1/foldera
注文する:
for f in folder*/*/; do mv -v "$f" "${f%???}"; done
後ろに:
./folder3
./folder3/folde
./folder2
./folder2/folde
./folder1
./folder1/folde
これファイル名拡張子ここではサブフォルダ内のフォルダだけが一致するfolder*/*/
ため、最後にスラッシュがあります。このmv
コマンドは、最後の2文字(上記の3文字)を削除します。なぜなら、末尾のスラッシュも変数値で計算されるからです。