ディレクトリ内の複数のファイル名の記号で区切られた2つの文字列を置き換えます。

ディレクトリ内の複数のファイル名の記号で区切られた2つの文字列を置き換えます。

author - nameいくつかの書籍のファイル名の文字列をname - author。に変更したい。

ls * | sed -r 's/(.+) - (.+).pdf/mv \2 - \1.pdf/' | sh

たぶんそれは混合かもしれません 記号で区切られた任意の長さの2つの文字列を置き換えます。 そしてsedを使用して複数のファイルの名前を変更する

これはうまくいきません

for file in *; do mv "$file" "$(echo "$file" | sed -r 's/(.+) - (.+).pdf/\2 - \1.pdf/')"

...でもない

rename 's/\([.]+\) - \([.]+\)\.pdf/\2 - \1\.pdf/' *

これは効果があります

rename 's/(.+) - (.+).pdf/\2 - \1.pdf/' *

ベストアンサー1

この試み

% ls -1                                                                                                       
001-foobar.pdf
002-foobar.pdf
003-foobar.pdf

パスワード

% rename -n 's/([^-]+)-([^\.]+)\.pdf/$2-$1.pdf/' *.pdf                                                          
001-foobar.pdf -> foobar-001.pdf
002-foobar.pdf -> foobar-002.pdf
003-foobar.pdf -> foobar-003.pdf

ノート

(テストが正常な場合は -n スイッチを外してください.)

警告する これを行うこともできないかもしれない同じ名前の他のツールがあるので注意してください。

次のコマンドを実行すると(GNU

$ file "$(readlink -f "$(type -p rename)")"

この結果が出ました。

.../rename: Perl script, ASCII text executable

以下は含まれません:

ELF

もしそうなら、これは正しいツールのようです=)

そうでない場合は、それをデフォルト値に設定し(通常はすでに適用されている)、Debian次のように派生しますUbuntu

$ sudo update-alternatives --set rename /path/to/rename

(コマンドのパスに置き換えます/path/to/renameperl's rename


このコマンドがない場合は、パッケージマネージャを検索してインストールするか、手動で行う


最後に、このツールはもともとPerlの父親であるLarry Wallによって書かれました。

おすすめ記事