重複の可能性:
ファイル拡張子をクリーンアップするにはどうすればよいですか?
CentOSを使用しています。 1つのフォルダに1000万を超える画像があり、サブディレクトリにグループ化されています。
問題は、私の画像のいくつかの名前がabcであるということです。.jpg他のものはxyzと命名されます。JPG。したがって、xyz.jpgにアクセスしようとすると、拡張子は大文字と小文字が区別されるため、「ファイルが見つかりません」と表示されます。
この問題を解決するために、すべてのJPG
名前を変更するjpg
か、httpd設定を変更する方法はありますか?
答え1
次のことを試してください(これを行うと、このファイルを実行しているディレクトリのすべてのサブディレクトリで、すべての.JPGファイルの名前が繰り返し.jpgに変更されます)。
find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;
findは現在のディレクトリとそのサブディレクトリから* .JPGという名前のすべてのファイルを検索し、リストをmvコマンドに渡して名前を変更します。
答え2
このような質問や回答にはいつも通り、次の点に注意してください。
find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;
ほとんどの人にはうまく機能しますが、場合によってはセキュリティ上の問題につながる可能性があるため、公に宣伝するのは危険です。
これにより、ファイルとディレクトリの名前が変更されます。ディレクトリの名前を変更すると、その中のファイルの名前は変更されません(-深さオプションを使用)。
ファイルが失われたり(foo.JPGがfoo.jpgに名前が変更され、foo.jpgがすでに存在する場合)、ファイルを不要な場所に保存することができます(たとえば、fooというファイルがあるディレクトリを考えてください)。 .JPG ファイルで、foo.jpg というファイルは実際には /etc/apache2/conf.d へのシンボリックリンクなので、攻撃者にユーザーをだましてファイル名を変更させることができます。
これらの問題の多くは、最初からやり直すのではなく、そのタスク用に特別に設計されたツール(ファイル名の一括変更)を使用することで回避できます。 zshのmmvとzmvを考えました。