私は例えば、「0.1' で終わるファイルの数を持っている:Linux/Unixでは複数のファイルをある拡張子から別の拡張子にリネームする方法はありますか?
example.file.ex1.1
example.file.ex2.1
example.file.ex3.1
私はすぐに終わりに」0.1' せずに、すべての名前を変更することができる方法(例えば例があります.file.ex1、example.file.ex2など)?
ありがとうございます!
私は例えば、「0.1' で終わるファイルの数を持っている:Linux/Unixでは複数のファイルをある拡張子から別の拡張子にリネームする方法はありますか?
example.file.ex1.1
example.file.ex2.1
example.file.ex3.1
私はすぐに終わりに」0.1' せずに、すべての名前を変更することができる方法(例えば例があります.file.ex1、example.file.ex2など)?
ありがとうございます!
ピュアbashのソリューション:
for curFile in example.file.*.1; do
mv -- "$curFile" "${curFile:0:-2}"
done
はい、renameでこれを試してください:あなたのテストが有効な場合
rename -n 's/\.1$//' *
は-n
(ドライランモードスイッチ)を取り外します。
warning http://pix.toile-libre.org/upload/original/1377510865.pngは、またはこれを行うことができるので注意してもしなくてもよいと同じ名前を持つ他のツールがあります。
次のコマンド(linux
)
$ file $(readlink -f $(type -p rename))
を実行し、
.../rename: Perl script, ASCII text executable
のような結果を持っている場合、これは
)=適切なツールであると思われますそうでない場合は、 Debian
及びデリバティブなどのUbuntu
上のデフォルト(通常はすでにケース):
$ sudo update-alternatives --set rename /path/to/rename
少なくとも最後にではなく、は、このツールはもともとラリー・ウォール、Perlのお父さんによって書かれました。
デフォルトの '' rename''がUbuntuやDebian上で動作しない理由を説明できますか? ''/usr/bin/rename -n 's/.1 //' * ''を実行しているように見えますが、デフォルトの名前は変更されません。私は単純にそれを得ることはできません、どちらもperlの表現を許可しますが、一方は動作し、もう一方は動作しません。違いはなんですか? –
デフォルトの名前変更はUbuntu/Debianで動作するはずです –
うん!あなたが正しい。私の悪い –
別parameter expansionを使用してbashソリューション:
for curFile in example.file.*.1; do
mv "$curFile" "${curFile%.1}"
done
ありがとう!それは動作します: f = file.zip;エコー$ {f%.zip}# - > ファイル –
この質問は、それは[UNIXとLinux](http://unix.stackexchange.com/) –
すべての偉大な答えのために、より適しているため、オフトピックであるように思われます。ありがとう! – user2716340
私は試したが、明らかに十分な "評判"がない。 =) – user2716340