2017-11-12 3 views
-3

私は、スマイリー、フォローニー、ニュートラルな顔で作ったニューラルネットワークをテストしています。私は、スマイリーフェイス50枚、フェローニーフェイス50枚、ニュートラルフェイス(.png)50枚をそれぞれ別のディレクトリに持っています。mac bashスクリプトでディレクトリ内の50個のファイルの名前を変更するにはどうすればよいですか?

私のようなものに、各カテゴリ内の各ファイルの名前を変更したい:私が作ったとき、私は名前に注意を払っていなかったので、彼らは一種のランダムに命名され、今のところ

NeutralDraw0 
NeutralDraw1 
NeutralDraw2 
. 
. 
. 
NeutralDraw50 

写真(複数。 「無名」や「番号3」などの名前があります。

私はすべてのファイルの名前を変更するループなどに使用するbashスクリプトを作る方法を知りたい:

"Frowney/Smiley/Neutral" + "Draw" + Number 

だけ

+0

これは役立つかもしれません:https://stackoverflow.com/a/17978041/600486 – ochi

+0

実際にはあまり役に立たなかった... – Dinosaur212

+0

[Welcome to StackOverflow](http://stackoverflow.com/tour)。私は全体的な感覚は、投稿されたような質問はあまりにも一般的であり、あなたの部分から少しの努力が欠けているようだということです。私たちはあなたの答えを記述するためにここにはありません。私たちはここで、あなたが立ち往生している地点を過ぎるようにしています。今のところ、あなたは私たちにすべての仕事をして欲しいです。あなたの質問を改善するためのヒントについては、[ask]ページをお読みください。 – ochi

答えて

1

上記のような問題は、あなたがのためのパターンを持っているということですターゲットファイル名ですが、ソースファイル名には含まれていないようです。だからこそスクリプトを書くことは複雑です。そうでない限り...

1)3つのディレクトリを作成します。

mkdir Frowney Smiley Neutral 

2)ファイルを手動で適切なディレクトリに移動します。

3)次に、これを実行します。

#!/bin/bash 
# 
dirs="Frowney Smiley Neutral" 

# Verify that the directories exist 
for dir in $dirs 
do 
    if [ ! -d $dir ] 
    then 
     echo "ERROR: missing $dir!" 
     exit 1 
    fi 
done 

# process the directories 
for dir in $dirs 
do 
    echo "Processing $dir..." 

    counter=0 
    cd $dir 
    /bin/ls -c1 | while read -r file 
    do 
     ext="${file##*.}" 
     cp "$file" ../${dir}Draw$counter.$ext 
     ((counter = counter + 1)) 
    done 
    cd .. 
done 

注1:私はそれをテストするためのMacを持っていない、私は、Linux上でこれをしませんでした。 MacのbashはLinuxのbashとあまり変わらないと思う(と思う)。標準的なbashが提供しない奇妙な関数やコマンドは使用しませんでした。

注2:mvではなくcpコマンドを使用します。この方法では、ソースを変更しません。スクリプトが何か変わったことをするならば、ソースファイルを失うことはありません。満足したら、3つのディレクトリを削除します。

注3:ファイルには名前にスペースを入れることができますが、whileループはそれを処理します。

注4:ファイルが50個より多いか少ないかに関わらず、スクリプトは気にしません。それは単なるカウンタです。

+1

OPへの注意...あなたはmacOS Finderで最も簡単に1)と2)を行うことができます。 –

関連する問題