私の顧客の一つは学校です。ファイルサーバーでは、すべてのプロジェクトに同じ名前付けスキームを持つディレクトリがあります。
<姓>、<名前> <2番目の名前>? - <プロジェクト説明>
たとえば、
Miller, John Andrew - 長いプロジェクトの説明 Willis, Bruce - 説明、コンマを含めることができます Lewis, Mary Jane - 説明 - マイナス記号付き
新しい命名規則は次のとおりです。
<名前> <2位>? <姓> - <プロジェクトの説明>
たとえば、
John Andrew Miller - 長いプロジェクトの説明 ブルース・ウィリス(Bruce Willis) - 説明、カンマを含めることができる Mary Jane Lewis - 説明 - マイナス記号付き
今、すべての既存のフォルダの名前を新しいルールに一括変更する方法は?
ベストアンサー1
ファイル名の説明部分には、パターン-
(2つのスペースの間のハイフン)を含めることができるため、特定のシンボルに変更できます。いいえ説明セクションに表示されます。を選択しましたが、£
純粋にランダムでした。
rename 's/ - /£/' *
rename 's/([^,]*), ([^£]*)£/$2 $1 - /' *
s/ - /£/' tells rename to replace the first instance of
- it finds with
£ . The second command is a bit more complicated. Parenthases (
() ) are used to group selections together -- so everything that matches the pattern within the first set of parens can be called later as
$1 (all the way up to
$9 ).
[^,] means 'any character, except for
,';
means 'zero or more of the previous character';
[^,]`は、「カンマ以外のすべての文字が0個以上ある」を意味します。名前の変更は基本的に貪欲なので、可能な限り長い文字列と一致します。
残りは自然に出てくると思います。
ファイル名に記号が表示されるかどうかわからない場合は、次を実行してください。
printf '%s\n' *£*
Perl-renameがある場合:
rename 's/([^,]*), (.*) - /$2 $1 - /' *
ファイル名の説明部分に-
(たとえば、-
2つのスペースの間にaが含まれている場合)、問題が発生します。
テストにはこのフラグを使用する必要があります-n
。ファイル名は変更されませんが、その内容が表示されます。会議完成した:
rename -n 's/([^,]*), (.*) - /$2 $1 - /' *