4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

シェルスクリプトでフォルダ内のファイルを順に処理

Last updated at Posted at 2020-06-02

1.やりたいこと
2.コード紹介
3.実行例
4.おまけ

#やりたいこと
フォルダ内のデータ(名前)を取得します。
本記事ではフォルダ内ファイルの拡張子を.txtから.logに変更するループ文のシェルスクリプトを紹介します。

#コード紹介
現在のフォルダの状況

実行前の状況
$ ls
1.txt   2.txt	3.txt	4.txt	5.txt	main.sh
main.sh
#!/bin/sh
for filename in *.txt
do
	mv ${filename} ${filename%.txt}.log
done

#実行例

main.shの実行
sh main.sh
実行後の状況
$ ls
1.log   2.log	3.log	4.log	5.log	main.sh

.txt拡張子が.logに変更されていることがわかります。

#おまけ
何十万のデータに番号をつけたい場合も利用できますね。
for分の途中でカウンタを文字列付与すれば一気に大量のデータに番号をつけることもできます。

main.sh
#!/bin/sh
cnt=1
for filename in *.txt; 
do
	mv ${filename} data_${cnt}.log;
    #cnt変数のインクリメント 
	cnt=`expr ${cnt} + 1`
done
実行後の状況
$ ls
data_1.log  data_2.log  data_3.log  data_4.log  data_5.log  main.sh
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?