web-dev-qa-db-ja.com

ファイル名内の特定の文字シーケンスを置き換えます

私の友人は、Windows上でこのように大量のファイルをグループ化しました

enter image description here

彼にUbuntuに切り替えさせた後、ファイルは前の感嘆符の数に基づいて並べ替えられなくなったので、次のルールに従ってファイルを切り替える方法を知りたいと思います。

  • 1 にとって !および!!

  • 0 にとって !!!および!!!!

私はawkを使うべきだと思いますが、私は専門家ではないので、ここにいます。

1
elect

GUIを使用したファイルとディレクトリのバッチ名前変更には、 GPRename を使用できます。

GPRename

あなたはそれをインストールすることができます:

Sudo apt-get install gprename
2
madneon

pythonスクリプト:

_#!/usr/bin/env python3
import os
import shutil
import sys

dr = sys.argv[1]
replace = ["!", "!!", "!!!", "!!!!"]

for f in os.listdir(dr):
    test = [f.startswith(s) for s in replace]
    if test.count(True) > 2:
        shutil.move(dr+"/"+f, dr+"/"+"0"+f.replace("!", ""))
    Elif 0 < test.count(True) < 3:
        shutil.move(dr+"/"+f, dr+"/"+"1"+f.replace("!", ""))
_

_!!!!_がでのみ発生すると仮定すると、先頭の_!!!_と_0_は_!!_に、_!_と_1_は_!_に置き換えられます。名前の始まり。

それを使用するには

  1. スクリプトを空のファイルに貼り付け、_rename.py_として保存します
  2. 次のコマンドを使用して、ターミナルウィンドウから実行します。

    _python3 /path/to/rename.py '<directory>'
    _

    ここで、_<directory>_は、名前を変更するファイルを含むディレクトリです。

2
Jacob Vlijm

Perlベースのrenameコマンドを使用することもできます。

rename -vn -- 's/^!{1,2}(?!!)/0/' *

名前の先頭(!)に!が続かない1つまたは2つの^文字に一致し、s置換0;そして

rename -vn -- 's/^!{3,4}(?!!)/1/' *

名前の先頭(!)に!が続かない3つまたは4つの^文字に一致し、s置換1

注:-nスイッチを使用すると、実際に名前を変更せずに「ドライラン」を実行できます。先に式をテストし、続行する場合はnを削除してください。

1
steeldriver