Synologyのファイル名にタイムスタンプを含むファイルの名前を変更する

Synologyのファイル名にタイムスタンプを含むファイルの名前を変更する

多数のファイルが名前にタイムスタンプが含まれている "名前が変更されました"。バッチの名前を変更する方法が見つかりません。 「Batch Rename Utility」などのバッチの名前変更を使用し、regexコマンドを使用しようとしていますが、コマンドを作成できません。

無効なファイル名は次のとおりです。[130bpm] salsaish (2020_11_04 13_32_49 UTC).wavファイルは次のようにする必要があります。[130bpm] salsaish.wav

したがって、削除された文字列は次のようになります(2020_11_04 13_32_49 UTC)。ただし、これらの文字列は名前が変更されたときに変更することができ、ファイルに特殊文字を含めることができます。

名前をすべて変更する方法はありますか?

答え1

私の場合はSynologyできPerlませんrename。安全上の問題により攻撃面Perl、デバイスに何も追加しないでください。プラグインがありますが、デフォルトのシェルであるshpureを使用できます(shリンクbash):

for i in *.wav; do echo mv -- "$i" "${i% (*}.wav"; done

または置換存在するパラメータ拡張:

for i in *.wav; do echo mv -- "$i" "${i// (*)/}"; done

これはシェルを使用しますパラメータ拡張 望むより:http://mywiki.wooledge.org/BashFAQ/073そしてman bashの「パラメータ拡張」。また見てくださいhttp://wiki.bash-hackers.org/syntax/pe

% (*

右部分を削除することを意味[[:space:]](*しますglob正規表現

echo出力が満足のいく場合は削除してください。

答え2

Perlで実装されたプログラム(パッケージの一部であるrename他のプログラムがあります):renameutil-linux

$ perl-rename  -n 's, \(.+?\),,' *
[130bpm] salsaish (2020_11_04 13_32_49 UTC).wav -> [130bpm] salsaish.wav

貪欲ではない方法で、最初の空白と括弧とその間のすべての項目を削除します。新しい名前が必要な名前であることを確認し、-n実際に名前を変更するには削除してください。

答え3

長く遅れて申し訳ありません。以下は私がPHPで使用しているコードです。

<?php
function getDirContents($dir, &$results = array()) {
    $files = scandir($dir);

    foreach ($files as $key => $value) {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
        if (!is_dir($path)) {
            $results[] = $path;
        } else if ($value != "." && $value != "..") {
            getDirContents($path, $results);
            $results[] = $path;
        }
    }

    return $results;
}

$dir = getDirContents('./DBM5000');

echo '<table equalcells="1">';

foreach($dir as $file)
{
    
    $good_file = preg_replace("/ \([^)]+\)/","", $file);    
    
    $isfile = is_file($good_file);
    
    echo '<tr>';
    echo '<td>'.$file.'</td>';
    echo '<td>'.$good_file.'</td>';
    
    if(pathinfo($good_file, PATHINFO_EXTENSION))
    {
        echo '<td>FILE</td>';
        
        rename($file, $good_file);
        
    }
    else
    {
        echo '<td>DIRECTORY</td>';
    }
    
    echo '</tr>';   
}

echo '</table>';

関連情報