hans

hans

【シェル】特定のディレクトリ内のすべてのファイルの名前を変更する、5桁の数字で、0で埋める。


シェルに触れたばかりで、複雑なスクリプトは書けません。できるだけ簡単なもので妥協し、望んでいる機能を実現できれば良いです。徐々に学んでいきます!

このスクリプトの機能はおおよそ次のようなものです。まず、特定のディレクトリに移動し、そのディレクトリ内には多くのサブディレクトリがあります。それぞれのサブディレクトリに順番に移動し、サブディレクトリ内のすべての jpg 画像の名前を変更します。フォーマットは 5 桁の数字で、0 で埋めます。インターネットで直接 5 桁の数字を出力する方法が見つからなかったため、7 桁の数字 num を定義するしかありませんでした。
名前の変更が終わったら、先頭の 100 を 0 に変更します(私のサブディレクトリ内のファイル数は数千しかありません)。これはさまざまな応用が可能です。

#!/bin/sh

cd train/
num=1000000
new=0
for dir_name in $(ls) #サブディレクトリを検索
do
	l=1
    if [ -d $dir_name ]; then
	    cd $dir_name/ #サブディレクトリに移動
	    for img in $(ls)
	    do
		    let new=num+l
		    rename "s/$img/$new.jpg/" *
		    let l=l+1
	    done;
	    rename 's/^100/0/' *.jpg
	    cd ../
    fi
done;

もし良い方法があれば、コメントで共有していただけると嬉しいです。ありがとうございます!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。