さまざまなアクション部分を使用してforループを実行する

さまざまなアクション部分を使用してforループを実行する

例:テキストファイルに100個のフォルダ名が保存されています。for同じループ内で10個の名前ごとに異なるコマンドラインを適用するにはどうすればよいですか?つまり、10個のフォルダごとに異なる名前に名前を変更するには、mv同じforループでテキストファイルの10個のエントリごとにそのコマンドをどのように適用しますか?

#!/bin/bash -f
source=PATH TO THE DATA (100 FOLDERS)
for f in $(cat text.txt); do 
mv ${source}/"old folder name" ${source}/" new folder name"
done

ベストアンサー1

テキストファイルにあるので、for異なるインデックス整数を使用して2つのループを実行し、テキストファイル内の場所に応じてファイルアドレスを指定できます。

for (( i=0 ; i<=9 ; i++ )) ; do
  newpos=$i_files
  for (( j=1 ; j<=10 ; j++ )) ; do
     mv "$( sed -n "$(( $i*10+$j ))p" filelist)" "$newpos"
  done
done

その程度なので、mv入力ファイルの塊を使用することもできます。sed

 for (( i=0 ; i<=9 ; i++ )) ; do
    newpos=$i_files
    mv "$( sed -n "$(( $i*10+1 )),$(( ($i+1)*10 ))p" filelist)" "$newpos"
 done

このセクションの説明sedsed -n "4,8p" fileファイルの4〜8行目が印刷されます。

おすすめ記事