ファイル名がn文字を超えると、最後の文字が削除されます。

ファイル名がn文字を超えると、最後の文字が削除されます。

私はUnixシェルに初めて触れ、私の質問に対する答えを見つけることができないようです。

複数のファイルを含むフォルダがあります。正しいファイル名には、正確に13文字(数字+文字+下線)が含まれています。たとえば、

1305359000_PS.JPG

一部のファイル名が正しく指定されていません。エラーは常に最後の文字にあります。例:

9009015000_PS_1.jpg

フォルダ内のすべてのファイルに対して機能する検索/置換コマンドを次のように実行する必要があります。

ファイル名が13文字を超えると(拡張子なし)、13文字目以降のすべての文字が削除されます。

いくつかのコマンドを試しました。ミリメートル波そしてアッしかし、これまで私は立ち往生しています。

編集:正確さを忘れてください。コマンドは、ファイル名のスペースを考慮してスペースがある場合は削除する必要があります。

ベストアンサー1

bashシェルを使用すると仮定

(shopt -s globstar; rename --no-act 's/^(.{13}).*/$1\.jpg/' **/*)

したがって、(....)このshopt -s globstarオプションは、何らかの理由でワイルドカードを有効にしていない場合は、1つのコマンドにのみ適用されます。 zshを使用する場合

rename --no-act 's/^(.{13}).*/$1\.jpg/' **/*

この--no-actスイッチは潜在的な機能を事前に示していますrename
提案された変更が満足な場合、削除する-no-actとファイル名が一括変更されます。

おすすめ記事