複数のファイルから_000のすべてのインスタンスを削除します。

複数のファイルから_000のすべてのインスタンスを削除します。

死んだハードドライブから私の音楽ライブラリを復元する必要がありました...すべての音楽トラック名の最後に_000が追加されたことを除いて、私が欲しいものすべてを手に入れました。

私は8000の個々の音楽トラックを検索し、名前変更を選択して_000文字列を削除するのは本当に好きではありません。

すべてのアルバムサブディレクトリを含む完全な音楽フォルダを検索し、すべての個々のトラック名から_000をすべて削除するにはどうすればよいですか?

ベストアンサー1

mikesrvソリューションはより良い安全性がありますが、次の方法で行うこともできると思います。名前を変更する:

find Music/ -type f -name '*_000' -print0 | xargs -r0 rename -v '_000' ''

しかし、上記のように、明らかに目的の動作ではなくalbum_00020_000名前を変更するなどの潜在的な問題がまだあります。私はDebianディストリビューションがツールだと思います。album20
perl名前を変更するできます。しかし、残念ながらインストールする方法が見つかりません。だから私は次のperlスクリプトを見つけました。ここ十分です:

#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

したがって、スクリプトを実行可能にし、次を実行できます。

find Music/ -type f -name '*_000' | /path_to_script/rename.pl 's/_000$//'

おすすめ記事