rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

ディレクトリ内のすべてのファイルのループ処理 シェルスクリプト

2021 Feb. 21.
2020 Jun. 07.

https://qiita.com/yuba/items/489fadb350246b5c94e7 に下記コードが解説されている

while read -d $'\0' File; do
    "${File}" に対して処理
done < <(find ディレクトリ -print0)

forループでは
ディレクトリが空だったときに変数Fileに"*"という値が入ってしまう。
ファイル名がホワイトスペース・空白や引用符文字を含んでいる場合に誤ったファイル名となる。

lsでファイル名をリストアップすると改行を含むファイル名が切れてしまう、

read -d $'\0' :null文字を区切りとして読み込む。$'\0'はヌル文字表現。
find -print0 :null文字を区切りとして出力する。
done < <(find ディレクトリ -print0) の <(COMMAND) はコマンド置換。

(コマンド置換参考サイト)
whileループにコマンドの結果を渡すにはプロセス置換を使えばよい シェルスクリプト - rokkonet
シェルの入出力制御あれこれ - Qiita