ファイル名から「?」(「?」を含む)の後のすべての文字を削除するには?

ファイル名から「?」(「?」を含む)の後のすべての文字を削除するには?

複数のファイルをダウンロードして削除するファイル名に、認証パラメータのように見えるものを追加しました。例:

file1.doc?b1h2uj3b123uiyb12
file2.xls?oi12jo3ij123oij
file3.jpg?0990xcizx0cxzczixuchbiasdu

ファイル全体のフォルダから疑問符の後ろのすべての項目を削除する簡単な方法はありますか?

ベストアンサー1

すべてのファイル名を疑問符と一致させ、を使用して*\?*変数から次の部分を削除できます。疑問符自体はワイルドカード文字なので、どちらの場合もエスケープする必要があります。?${var%%\?*}

ファイルの簡単なループを実行して実行すると、mvトリックを実行できます。

for f in ./*\?*; do
    echo mv -n "$f" "${f%%\?*}"
done

echo変更する前に実行する操作を確認できるように存在します。出力が合理的に見える場合は削除してください。)

おすすめ記事