ディレクトリ名の一部を使用してすべてのログの名前を変更する必要があります。
ログは次のとおりです。
friday13/stack123/FooBar-QA-123/000001.gz
friday13/stack123/FooBar-QA-123/000002.gz
friday13/stack123/FooBar-QA-123/000003.gz
friday13/stack123/FooBar-Stage-456/000001.gz
friday13/stack123/FooBar-Stage-456/000002.gz
friday13/stack123/FooBar-Stage-456/000003.gz
friday13/stack123/FooBar-Prod-789/000001.gz
friday13/stack123/FooBar-Prod-789/000002.gz
friday13/stack123/FooBar-Prod-789/000003.gz
上記のディレクトリの各ファイルの名前を次のように変更する必要があります。
FooBar-QA-123-000001.gz
FooBar-QA-123-000002.gz
FooBar-QA-123-000003.gz
FooBar-Stage-456-000001.gz
FooBar-Stage-456-000002.gz
FooBar-Stage-456-000003.gz
FooBar-Prod-789-000001.gz
FooBar-Prod-789-000002.gz
FooBar-Prod-789-000003.gz
事前に助けてくれてありがとう!
ベストアンサー1
パラメータ拡張の使用部分文字列の削除mv
返された各ファイル名のコマンドのターゲット引数を生成するには、次の手順を実行しますfind
。
find . -type f -name '*.gz' -exec sh -c 'mv -- "$1" "${1%/*}-${1##*/}"' sh {} \;
または同様に、以下を使用しdirname
てくださいbasename
。
find . -type f -name '*.gz' -exec sh -c '
mv -- "$1" "$(dirname "$1")-$(basename "$1")"
' sh {} \;
注:常に同様のコマンドを最初に置き換えてmv
テストしてください。echo