やるきなし

2021/02/03 16:25 / find した結果それぞれに対する処理

いつも忘れるのでメモ.

find . -type f とかで file をリストして,そのそれぞれに chmod 644 をしたい,とかそういう話.Windows とかから Linux に rsync したすべて 777 の file/directory に対して,

してもいいし,chmod 644 `find . -type f` で全てのファイルに対して chmod 644 してもいいのだけど,ファイル名やディレクトリ名にスペースが含まれると大変ややこしい.

2通りやり方があって,1つは find-exec option を使う方法.{} は引数に置換され,\; で終了を表す.{}\; の間にはスペースが必要.

もう1つは xargs を使う方法.find-print0 オプションは null 文字(^@)を区切りにしてリストするので,それを xargs -0 で 1つずつ処理していく.

あるいは shell の機能でなんとかするか.$i" でくくるのがポイント.