Linux Bulkは、メディアファイルとディレクトリの名前を、ファイル名とディレクトリ名の末尾に年の前後に括弧を付けるように変更します。


0

ビデオが撮影された年を示すために、ディレクトリ名の末尾に年がある、さまざまなディレクトリにホームビデオファイルがいくつかあります。それはまたそのディレクトリのファイル名の最後で拡張子の前にあります。一年中かっこで囲みたいです。

ファイルやディレクトリの中には、他の位置にファイル名の年(または年のように見える数字)があるものもありますが、最後に年を括弧で囲みたいだけです。たとえば、ここにディレクトリの1つがあります。

Videos/Xmas 2004 - Time To Go 2004

含まれています:

Xmas 2004 - Time To To 2004.mp4  
Xmas 2004 - Time To Go 2004.txt  
Xmas 2004 - Time To Go 2004.readme  

この命名システムになるように、すべてのメディアファイルの名前を一括で変更します。

Videos/Xmas 2004 - Time To Go (2004)

含む

Xmas 2004 - Time To To (2004).mp4  
Xmas 2004 - Time To Go (2004).txt  
Xmas 2004 - Time To Go (2004).readme

どうやってこれをするの? "find"コマンドを使ってファイルとディレクトリを取得することができます。

find /home/user/Videos/ -iname "* [1-2][0-9][0-9][0-9]"    # Find directories
find /home/user/Videos/ -iname "* [1-2][0-9][0-9][0-9].*"  # Find files

私はどうやって "-exec {} \;"を使うことができるのか疑問に思います。 renameまたはmvコマンド(またはsedまたはawk)を使用するための構造体、またはファイル名文字列を操作するためのbashスクリプトを作成して「-exec {} \;」に入れる

回答:


0

このスクリプトは必須を印刷します mv コマンド stdout。あなたはそれらをファイルに保存するべきです( sh script > file そしてそれらを点検しなさい。実行しても安全な場合は、ファイル内のコマンドを実行し sh file )または変更することがあります printsystem スクリプト自体に。

find $1 -type f > /tmp/to_rename
find $1 -type d >> /tmp/to_rename
perl -lne '
    $re = qr/([12]\d\d\d)(\.\w*)?$/;
    if (/$re/) {
        $old = $_;
        s/$re/(\1)\2/;
        print("mv \"$old\" \"$_\"");
    }
' /tmp/to_rename

@PeterFreemanあなたが答えを受け入れられると思ったらそれをマークしてください。乾杯。 :)
pii_ke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.