それマグで!

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

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

jc と jq の組み合わせで、ファイル名のクォートが便利

jc と jq の組み合わせで、ファイル名のクォートが便利

ファイル名にスペースが入る

次のように、ファイル名にスペースが入って、コマンドで処理するときにIFS(区切り)として解釈されちゃってとっても邪魔。

takuya@:$ls  -l  *5576*
-rwxrwxrwx 1 takuya takuya 2733101 Oct 26  2021 'IMG_5576 (2).JPG'
-rwxrwxrwx 1 takuya takuya     689 Oct 26  2021 'IMG_5576 (3).AAE'
-rwxrwxrwx 1 takuya takuya     689 Oct 26  2021  IMG_5576.AAE
-rwxrwxrwx 1 takuya takuya 2964682 Oct 26  2021  IMG_5576.JPG
-rwxrwxrwx 1 takuya takuya 2439727 Oct 26  2021 'IMG_E5576 (2).JPG'
-rwxrwxrwx 1 takuya takuya 2679346 Oct 26  2021  IMG_E5576.JPG

jc コマンドと jq コマンドでサクッと

これで、確実にクォートがされる。

takuya@:$ ls  -l  *5576*  | jc --ls | jq .[].filename
"IMG_5576 (2).JPG"
"IMG_5576 (3).AAE"
"IMG_5576.AAE"
"IMG_5576.JPG"
"IMG_E5576 (2).JPG"
"IMG_E5576.JPG"

jc コマンドで、JSONにできると、処理が格段に楽ですね。

bashでぶん回すときに、楽ですね。インストールは面倒だけど。

エスケープ処理がめんどくさくて、python/ruby のexec()スクリプト作ることも多いが、jc | jqで少し楽ができそう

関連資料

jc コマンドの例 - コマンドの結果をJSONの配列やオブジェクトにする。 - それマグで!

prinft でクォートする例 - シェルでファイル名をエスケープにしてクォート地獄を解決する。 - それマグで!