fish または bash で複数のフォルダ名からテキストを削除する

fish または bash で複数のフォルダ名からテキストを削除する

サブフォルダのあるフォルダがあります。各フォルダ名から [ garbage.com ] を削除したいです。 ] の後のスペースを削除したいです。

現在

$ ls 
 
[ garbage.com ] happy  
[ garbage.com ] Sad   
[ garbage.com ] confused  
dog  
cat  
rat  
.....

スクリプト後

$ ls  

happy  
Sad  
confused  
dog  
cat  
rat  

find コマンドを試しましたが、[] とスペースが邪魔をしてうまくいきません。

答え1

次のことを試してください。

rename "s/\[\ garbage\.com\ \]\ //" -n *

-n オプションは、計画された変更のみを出力します。実際にディレクトリの名前を変更するには、-n を削除します。これにより、ディレクトリだけでなくファイルの名前も変更されることに注意してください。

ディレクトリの名前のみを変更するには、次のようにします。

find . -type d -exec rename -n "s/\[\ garbage\.com\ \]\ //" {} ";"

関連情報