日本語を扱う(vim nano他)
環境変数を設定する。
~/.cshrc に追加
setenv LC_CTYPE ja_JP.UTF-8 setenv LANG ja_JP.UTF-8
ls -R の出力をCSVでまとめる
元ネタは
だが、ここで語られているのは Linux の Ubuntu の話。だから何か所か訂正しないと動かない。
シェル起動
早速だが、/usr/bin/sh ではなく /bin/sh
ls の日付表記オプション。
–time-style=+’%Y/%m/%d %H:%M:%S’ という表記だが、あるいみシンプルな -D “%Y/%d/%d %H:%M:%S” に変更。
タブ区切りが上手く出力できていない
パス\tファイル名\tパーミッション\tサイズ\tタイムスタンプ という感じで\t丸出しだったので、なんとかecho でタブ出力させたがったが、上手く行かなかった。
nano でタブを挿入。
出来てくるファイルの日付表記を自分好みに
20220505みたいな連続表記から 2022-05-05 17.15.15 のようなDropbox表記に。但し、スペースを恐れてアンダーバーで繋いだ。
というわけで出来たのがこちら
#!/bin/sh # ls-R で 整形してcsv 出力。 https://rfroml.com/2021/02/04/lsoutput/ # さんをもとに sakura internet rental server で動くように変更。 # タブの空間はタブであることを要確認。 # ファイル一覧を取得したいディレクトリのパスを取得 if [ "$1" != "" ] then # 引数が指定されていた場合、引数からパスを取得 LSDIR=$1 else #引数の指定が無い場合、カレントディレクトリのパスを取得 LSDIR=`pwd` fi # 実行シェルのパスを取得 cd `dirname $0` OUTDIR=`pwd` echo "以下のディレクトリ配下からファイル一覧を取得します。" echo ${LSDIR} echo " " # ワーク変数 WK1='' # 出力ファイル名設定 LIST="LIST_`date +'%Y-%m-%d_%H.%M.%S'`.txt" # ヘッダー出力 echo "パス"' '"ファイル名"' '"パーミッション"' '"サイズ"' '"タイムスタンプ" >>${OUTDIR}/${LIST} ls -l -R -D "%Y/%m/%d %H:%M:%S" ${LSDIR} | while read a b c d e f g h do # "total" の行は出力対象外 if [ "$a" != "total" ]; then if [ "$a" != "" ]; then # 1文字目を取得 WK1=`echo $a | cut -c 1` if [ "${WK1}" = "/" ]; then # 1文字目が"/"(スラッシュ)の場合は、パスとして取得 FILE_PATH=${a%?} else # ls の結果から必要な列のみ表示 echo "${FILE_PATH}"' '"$h"' '"$a"' '"$e"' '"$f"' '"$g" >>${OUTDIR}/${LIST} fi fi fi done # 終了メッセージ echo "処理結果を以下のファイルに出力しました。" echo ${OUTDIR}/${LIST} echo " "
また時間が出来たら、ブラシュアップもしよう。