それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

シェルでファイル名をエスケープにしてクォート地獄を解決する。

シェルスクリプトで、ファイル名をエスケープする

シェルスクリプトで、括弧()やスペースなどの文字種をエスケープしたいときに手早い方法がないか。

printf が手軽だった。

printf "%q" 文字列

実際の例ーカッコ

次のようにいい感じにエスケープしてくれる。

takuya@~$ printf '%q\n' '(note)(todo) 2022-01-23.txt'
\(note\)\(todo\)\ 2022-01-23.txt

実際の例- バックスラッシュ

バックスラッシュをエスケープしてくれる。

takuya@~$ printf '%q' 'C:\Windows'
C:\\Windows

実際の例- シングルクォーテーション

所有で使われるシングルクォーテーションも

takuya@~$ printf '%q' "takuya's"
takuya\'s

いい感じにエスケープを処理してコマンド文字列を作り、xargs や for に流せそうですね。