Tag: ubuntu Tag: linux Tag: シェル
シェル学習時のメモ
sudoのパスワードをパイプ渡しで
#!/bin/bash echo 'パスワード' | sudo -S fdisk -l
※ スクリプトが見えないようにしないと・・・セキュリティ上問題ありかな
フォルダの存在をチェック
- s20181119.sh
#!/bin/bash YYYYMM=`date +%Y%m` # testdirが存在するかチェック if [ -e $YYYYMM ]; then : else echo "$YYYYMM NOT found." echo "create $YYYYMM ..." mkdir $YYYYMM fi
ImageMagickで複数のファイルのサイズを一括変換
スクリプトと同じフォルダ内の「*.JPG」画像をフォルダ「1920」を作って、その中に1920x1080にして同じ名前で保存する。元のファイルはそのまま手を付けず。
- henkan1920.sh
#!/bin/bash mkdir 1920 for FILE in `ls -1 P*.JPG`; do convert -resize 1920x1080 $FILE 1920/$FILE; done
日付(年4桁、月2桁、日2桁)をちょっと加工
- hogetest.sh
#!/bin/bash echo $1 echo "-------------------------" hoge=`echo "$1" | sed -e 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)$/\1-\2/g'` echo $hoge echo "$1" | sed -e 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)$/\1\/\2\/\3/g' echo "$1" | sed -e 's/\([0-9]\{4\}\)[^0-9]\([0-9]\{2\}\)[^0-9]\([0-9]\{2\}\)$/\1\/\2\/\3/g' echo "$1" | sed -e 's/\([0-9]\{4\}\)[^0-9]\([0-9]\{2\}\)[^0-9]\([0-9]\{2\}\)$/\1_\2_\3/g'
テストの方法
$ ./hogetest.sh 2018-10-11
2018-10-11
-------------------------
2018-10
2018/10/11
2018/10/11
2018_10_11
CSVの行と列を入れ替える
- 引用元を忘れた。
cat CSVファイル | ./gyou-retu.sh
- gyou-retu.sh
#! /usr/bin/gawk -f
# transposed_matrix.awk
BEGIN {
FS=","
OFS=","
}
{
for (i = 1; i <= NF; i++) {
val[i, NR] = $i;
}
}
END {
for (i = 1; i <= NF; i++) {
for (j = 1; j <= NR; j++) {
printf("%s%s", val[i, j], OFS);
}
print "";
}
}
バックアップファイルの8日以上前のものを削除
- デスクトップのメモなどのバックアップを取っているが、その古いものを削除する。
- 2020-01-03 動いていたもののメモ。
- 利用していた時のスクリプトのパス: ~/bin/del_old_desktop_backup.sh
#!/bin/bash find /home/isao/work -type f -mtime +7 -name tar_i3-2125\*.tar.gz -exec rm {} \;
同形式のCSVファイルを1本にまとめる
- 先頭2行が項目。項目は最初だけ。
- ファイルは、1977.csv, 1978.csv...の数個。
- まとめたファイル名は、all.csv
- matome.sh
#!/bina/bash files="1977 1978 1979 1980 1981 1982 1983 1984" head -n 2 1977.csv > all.csv for f in $files do tail -n +3 $f.csv >> all.csv done
フォルダ内の更新n日以内のファイル一覧
- selectでファイルの選択してみる。
- hoge_mktime.sh
#!/bin/bash find ~/work/ -mtime -2 | tee in1day.txt select SFILE in `cat in1day.txt` do ls -l $SFILE done
ログの集計等
apacheのエラーログで"File does not exist"をIPアドレス毎にカウント
#!/bin/bash # ログより "File does not exist"をIPアドレス毎にカウント LOGFILE=ssl_error_log IPLIST=$(grep "File does not exist" $LOGFILE | cut -d" " -f8 |cut -d] -f1 | sort | uniq) for IP in $IPLIST; do echo $IP:$(grep -c $IP $LOGFILE) done
URL
HJSplit
簡単!ファイル分割+ファイル結合(統合)ツール、大容量ファイルの送信に。
https://hjsplit.softonic.jp/