私は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
とファイル名が一括変更されます。