t_nakasu
@t_nakasu

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[bash] スペースを含むパスをfindで検索し、forループを実行

解決したいこと

findコマンド実行時にスペースが含まれている場合-print0, xargsで回避できるのは知っていますが、
それをforループ内で処理するときにどうしても分解したくないスペースで分解されてしまいます。
どうにかパスを維持したままループ処理できないでしょうか?

該当するソースコード

files=`find ./${DIR} -maxdepth 9 -type f -print0 | xargs -0 ls`
for ithfile in $files;
do
    echo $ithfile
done

自分で試したこと

awkで無理やりダブルクォートを付与したりしてみましたが、変わらずです。

0

1Answer

for でなくてもよければ while で以下のように書けます。

files=`find ./${DIR} -maxdepth 9 -type f -print0 | xargs -0 ls`
while IFS= read -r ithfile;
do
    echo "$ithfile" # クオートしないと2個以上連続するスペースが1個に潰れる
done <<< "$files"
2Like

Your answer might help someone💌