ファイル名から特定の単語を削除するには?

ファイル名から特定の単語を削除するには?

私のファイルはimport/imagesディレクトリにあります。

Documents\ProductImages\1.jpg
Documents\ProductImages\2.jpg
Documents\ProductImages\3.jpg

ファイル名からどのようにDocuments\ProductImages\削除できますか?

答え1

次のことを試すことができます。

for i in 'Documents\ProductImages\'*.jpg; do mv -n -- "$i" "${i##*\\}"; done

拡張は、パターン${i##*\\}に一致する最長のプレフィックスを削除します。ここでは、最後のバックスラッシュまでのすべての項目を別のバックスラッシュにエスケープする必要があります。

答え2

renameシステムに1つがある場合は、通常この種の作業に適したツールです。

2つの可能なバージョンがあることを知っています。構文は異なりますが、どちらもあなたの例で動作します。

Red Hat シリーズに一般的に配布されるバージョンは次のとおりです。

rename 'Documents\ProductImages\' '' *.jpg

他のバージョンではこれを行うことができます。

rename 's/.*\\//' *.jpg

これは、最後の部分以降の部分だけを維持したいと仮定します\。より具体的に知りたい場合:

rename 's/^Documents\\ProductImages\\//' *.jpg

関連情報