番号は同じままで、スペースでファイル名を変更します。

番号は同じままで、スペースでファイル名を変更します。

数値文字列をそのままにしながら、ファイル名にスペースを含む多くのファイルの名前を変更したいと思います。すべてのファイルに対して数字が連続しているわけではなく、数字の前後の文字列は同じではありません。数字の前の文字列がすべてのファイルに対して同じであることを望みます。

たとえば、

100 foo_1.ext
200 foo_2.ext
201 foo_3.ext

次に名前を変更する

100.ext
200.ext
201.ext

ベストアンサー1

あなたは試すことができます:

for a in *.ext; do mv "$a" "${a/ */}.ext"; done

説明する:

for a in *.ext.ext- 現在のディレクトリにある拡張子を持つすべてのファイルをインポートします。

a/ */- 部分文字列を何もないものに置き換えます( ${string/substring/replacement} )。この構文は、空白(含む)の後にあるすべてのシンボルを取得して削除します。

またはあなたが持っているなら拡張子が異なるファイルディレクトリ内のすべてのファイルを処理する必要がある場合は、以下を試してください。

for a in *; do mv "$a" "${a/ *\./\.}"; done

Perlの名前変更コマンドと同等のものは次のとおりです。

prename 's/ .*\./\./' *

はい: ドキュメント

100 foo_1.ext
200 foo_1.ext
201 foo_3.ext
3401 txt_3.txt

次に、名前が変更されます。

100.ext
200.ext
201.ext
3401.txt

名前にスペースが含まれていないファイルは処理されません。

おすすめ記事