私はこのようなディレクトリ構造を持っています。
.
├── Round_1_Div2
│ ├── file1.txt
│ └── file2.txt
├── Round1Div2
│ ├── file3.txt
│ └── file4.txt
├── Round_2_Div2
│ ├── file1.txt
│ └── file2.txt
└── Round2Div2
├── file3.txt
└── file4.txt
次のすべてのファイルを変換する必要があります。1ラウンド2ラウンド到着Round_1_Div2そして2ラウンドディビジョン2到着Round_2_Div2
私の短い知識によると
find *ound[0-9]Di* > rename.txt
sed -e 's/ound/ound_/;s/Di/_Di/' < rename.txt > newname.txt
名前の変更.txtそして名前.txt上記のコマンドを実行した後に生成されました
名前の変更.txt
Round1Div2
Round2Div2
新しい名前.txt
Round_1_Div2
Round_2_Div2
それぞれに指定されたディレクトリ内のすべてのファイルを移動する方法名前の変更.txtそのディレクトリに移動新しい名前.txtありがとうございます。
ベストアンサー1
Perlユーティリティ(rename
およびとも呼ばれる)を使用する:prename
file-rename
$ rename -n 's/Round(\d)Div(\d)/Round_$1_Div$2/' */*
rename(Round1Div2/file3.txt, Round_1_Div2/file3.txt)
rename(Round1Div2/file4.txt, Round_1_Div2/file4.txt)
rename(Round2Div2/file3.txt, Round_2_Div2/file3.txt)
rename(Round2Div2/file4.txt, Round_2_Div2/file4.txt)
この-n
オプションを使用するとテストが実行されるため、内容のみが表示されます。会議実際にするよりもすること。必要な操作が実行されることを確認したら、削除-n
(進行状況表示やその他の出力なしでファイル名を変更)するか、-v
詳細な出力に変更してください。
$ rename -v 's/Round(\d)Div(\d)/Round_$1_Div$2/' */*
Round1Div2/file3.txt renamed as Round_1_Div2/file3.txt
Round1Div2/file4.txt renamed as Round_1_Div2/file4.txt
Round2Div2/file3.txt renamed as Round_2_Div2/file3.txt
Round2Div2/file4.txt renamed as Round_2_Div2/file4.txt