Bashスクリプトを使用して複数のLinuxファイルの名前を変更する方法

Bashスクリプトを使用して複数のLinuxファイルの名前を変更する方法

私は持っています

123myfile123.jpg
123456myfile567.jpg

最初のアルファ文字の前のすべてを削除したいと思います。

myfile123.jpg
myfile567.jpg

0〜9をすべて削除することがあります。

mv '123myfile123.jpg' $(echo '123myfile123.jpg' | sed -e 's/[0-9]//g')

myfile,jpg私に必要な結果myfile123.jpg

これにご協力いただきありがとうございます。

答え1

これは単なる提案です。これを行うより効率的な方法があるかもしれませんが、これが役に立つことを願っています。

for i in $(find . -type f -name '*.jpg'); do mv -v $i $(echo $i | sed 's/\.\/[0-9]\+\(.*.jpg\)/\1/g'); done

コマンドの簡単な説明:

まず、各ファイルに一致するfindコマンドの各結果を繰り返します。.jpg

出力例:

./123myfile567.jpg
./123456myfile567.jpg

その後、\.\/[0-9]\+\(.*.jpg\)正規表現は次のことを行います。

  • ./最初から一致しました。
  • 私は以下を使用して1つ以上を一致させます[0-9]+
  • 使いたい部分を選んで()後で呼びます\1

[編集する]

まだ一つあります。ツール呼び出されrename、正規表現の使用に基づいています。私はそれが何人かの人々に役立つことを願っています。

答え2

renameLarry WallのPerlバージョンをインストールできます。

UniverseリポジトリからUbuntuにインストールできます。 (getpackこれは独自のシェルスクリプトなので、必要に応じてここに追加またはリンクできます。)rename他のLinuxディストリビューションにもインストールできると思います。

$ getpack rename
lrwxrwxrwx 1 root root 24 jan 10  2023 /usr/bin/rename -> /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 jan 10  2023 /etc/alternatives/rename -> /usr/bin/file-rename
-rwxr-xr-x 1 root root 4529 okt 31  2021 /usr/bin/file-rename
-------------------------------------------------------------------
/usr/bin/file-rename: Perl script text executable
-------------------------------------------------------------------
 package: /path/program  [for command 'rename']
 rename: /usr/bin/file-rename 
-------------------------------------------------------------------
type: rename is /usr/bin/rename

$ apt-cache policy rename
rename:
  Installerad: 1.30-1
  Kandidat:    1.30-1
  Versionstabell:
 *** 1.30-1 500
        500 http://se.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        500 http://se.archive.ubuntu.com/ubuntu jammy/universe i386 Packages
        100 /var/lib/dpkg/status

sudo apt install rename

その後、オプションを使用して「テストの実行」を確認できます。-n

$ rename -n 's/^[0-9]*//' *myfile*.jpg
rename(123456myfile567.jpg, myfile567.jpg)
rename(123myfile123.jpg, myfile123.jpg)

よかったら、削除し-nて実行し、ファイル名を変更してください。

rename 's/^[0-9]*//' *myfile*.jpg

ターゲットファイルは*myfile*.jpg、おそらく実際のターゲットファイルに基づいて変更する必要があります*.jpg

関連情報