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