ファイル拡張子からクエリパラメータを削除する方法は? [コピー]

ファイル拡張子からクエリパラメータを削除する方法は? [コピー]

ファイル拡張子からクエリパラメータを削除する方法

以下のように260,000枚の画像ファイルをダウンロードしました。

filename.jpg?
filename2.jpg?
filename3.jpg?

ファイル拡張子で問題のある "?"の名前を簡単に変更または削除するにはどうすればよいですか?

様々なosxパッケージを試してみました。

Finder
A better Finder Rename 11
Name Mangler
Renamer
vRenamer

...しかし、それらのどれもそれをすることはできません。

-most packages cannot seem to access the '?' in the file exenstion

-Name Mangler can suucesfuly append and extra ".jpg" to file, giving me filename3.jpg?.jpg 
i could work with this, but it also can only do 5000 files at a time, which means 50 batches :-/

効率的な端末コマンドが必要です。ヒントをいただきありがとうございます!

ありがとう

マシュー

ベストアンサー1

あなたはそれを使用することができますパラメータ拡張そしてbash

以下のスクリプトは?ファイル名の内容をすべて削除するため、ファイル名がある場合は次のようfile?name.jpg?に置き換えられますfilename.jpg

#!/bin/bash

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

または1行のスクリプト:

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

最後の文字(たとえば)のみを削除するには、?次のように使用できます。

#!/bin/bash

for file in ./*; do 
mv "$file" "${file%?}" 
done

または1行のスクリプト:

for file in ./*; do mv "$file" "${file%?}" ; done

メモ:ファイルがあるディレクトリに配置する必要があります。それ以外for file in ./*の場合for file in /path/to/your_working_directory/*


名前変更の使用

コマンドを使用してファイル名を簡単に変更できますrename。 macOSではインストールできない可能性があるため、以下をインストールする必要があります。

brew install rename

このコマンドがmacOSで動作しているかどうかはわかりません。私はLinuxでテストしましたが、file-rename私が知っているものはどちらも同じです。私が間違っていたら、今教えてください。

?このスクリプトは、各ファイル名の末尾にある:を削除します。

rename 's/\?$//' *
#or
rename 's/\?$//' /path/to/your_working_directory/* 

これにより、すべての?ファイル名が削除されます。

rename 's/\?//g' *
#or
rename 's/\?//g' /path/to/your_working_directory/* 

おすすめ記事