次のフォルダ設定があります。
/path/to/directory/SLUG_1/SLUG_1 - SLUG_2 - SLUG_3
SLUG_2は年であり、「1994」や「2003a」などの文字が後に続くことがあります。
このファイルの名前を次に変更したいと思います。
/path/to/directory/SLUG_1/SLUG_2 - SLUG_3
私はこのコマンドに非常に近いです。
find $root -mindepth 2 -maxdeth 2 -type d | sed "s#\(\(/path/to/directory/[^/]*/\).* - \([0-9]\{4\}[a-bA-B]\? - .*\)\)#mv "\1" "\2\3"#
これは以下を印刷します:
mv "/path/to/directory/SLUG_1/SLUG_1 - SLUG_2 - SLUG_3" "/path/to/directory/SLUG_1/SLUG_2 - SLUG_3"
これが私が実行したいコマンドです。しかし、実行することはできません。
出力を変数に割り当て、その変数を呼び出して実行してみました。それは動作しません。このアイデアをいくつか変えてみましたが、エラーが発生しました。
ここにいくつかのツールがありません。いくつかの繰り返しツールを使用すると、これを簡単に作成できます。どんな提案がありますか?
ベストアンサー1
すべてのサブディレクトリが/path/to/directory
次の命名規則に従うと仮定します。
cd /path/to/directory
prename -n 's~/\d{4}[a-z]? - ~/~i' */*
prename
~であるパールの名前を変更する(どんなバリエーションでも可能です)。