私は、Linuxに新しいっぽいだし、プログラミングの初心者が、forループにファイルのリストを渡すためのコードhereの数行を一緒にパッチを適用することができました、そしてフォルダと同じことを行うためhere 。forループに変数(フォルダのリスト)を渡す方法は?
# Run search.sh from base folder;
# Only interested in folders under base folder (e.g., baseFolder/FolderA)
# list all folders in base directory that match search parameters;
# cut out just the folder name; feed to variable DIR
DIR=$(find . -name *MTL.txt | cut -d '/' -f2)
# echo $DIR = "FolderA FolderB FolderC"
# place that information in a for-loop
for i in $DIR; do
cd $DIR # step into folder
# find specific file in folder for processing
FILE=$(find -name *MTL | cut -d '/' -f2)
# copy in a static file from another folder;
# rename file based on file name found in previous step
cp /baseFolder/staticfile.txt $FILE.new
do more stuff
cd .. # step out of directory
done
コードは最初のディレクトリで正常に完了しますが、後続のディレクトリに移動できません。私は私の(多くの)問題の1つは、私のように$ DIRにフォルダ名のリストを渡すことができないと思っています。これはかなりシンプルなはずですが、私のfooは弱いです。
私は方法を示してください。
EDIT:
が所望の効果を持っていた "私は、CD $" に "のCDの$ DIR" を変更します。コードはすべてのディレクトリをループし、それぞれのディレクトリ内で正しく操作を実行します。 -Thx to core1024は、上記にフラグを立てます。
ところで...あなたはドットを欠場しないでください。 'find'の後に 'FILE = $(find -name * MTL | cut -d'/'-f2) 'と表示されますか? –
私は専門家ではありませんが、 'cd $ DIR#step into folder'は' cd $ i#step into folder'だと思います。 – core1024
@ core1024:私のコードでその小さなものを1つ変更すると、すべてがうまくいきました!答えとして投稿できますか?どうも。 – Prophet60091