質問

次の形式で名前を変更する必要がある数千のファイルがあります。 2008:09:18:17:45:48-alfanumeric-alfanumeric.wav最初の部分は日付です。

2008:09:18:17:45:48-703-s.wav

名前を変更したい:

20080918.174548.703.s.wav

基本的には ':'を削除し、人間が読みやすい形式にし、分割しやすくします。

私が探しているのは名前の変更ですが、正規表現は機能していません。入力中:

  

名前の変更   's /(\ d):(\ d):(\ d):(\ d):(\ d):(\ d)-(。?)-(。?)。wav / $ 1 $ 2 $ 3. $ 4 $ 5 $ 6. $ 7. $ 8.wav / '   ./*

役に立ちましたか?

解決

多重度を考慮する必要があります:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

他のヒント

rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

を使用する必要があります-バージョンでは、常に1桁のみに一致します。さらに、:。をエスケープする必要はありません。

これがあなたが一度だけやろうとしていることなら、私はこのようにします:

1)ファイルを新しいファイルにlsします:ls datadir <!> gt; mytmp 2)お気に入りのエディターでmytmpを編集します。   2a <!> quot;。<!> quotなど、気になるデータファイルではない行を削除します。および<!> quot; .. <!> quot;   2b各行をシェルコマンドに編集して、ファイルの名前を変更します。私はemacsが好きで、      ファイル名をクリップし、<!> quot; mv <!> quot;を挿入し、      ファイル名、スペースの挿入、ファイル名の再挿入、挿入されたファイル名の編集      目的の形式。   2c保存 3)sh <!> ltを実行します。 mytmp

完了!エディターがマクロまたは同様の機能をサポートしていない場合、エレガントではなく退屈ですが、動作し、git-er-doneが保証されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top