シェルスクリプト初心者です。
現在macにて
- itermを起動した時に
- 当日付のフォルダを作成し(フォルダ名は
mm-dd(月-日)
、/Users/xxx/Desktop
に作成) - 前日より前(1週間)のフォルダ(単、複数両方を想定)が存在し、存在したフォルダの中に
jpgファイル
があればssフォルダ(/Users/xxx/Desktop/ss)
に移動
と条件を満たすシェルスクリプトを作成しています。
1
、2
については見当がついていますが、
3
については
testコマンド
が使えそう(test -e(ファイル存在チェック)でワイルドカードを使う | コマンドの達人)だったが、
指定したフォルダ内の特定の拡張子(
jpg)を探す
といったような感じの方法の記事は見当たらなかった
- ファイルの存在確認でワイルドカードを使う - Qiitaを参考にしてみたがうまくいかなかった
といった状態で見当がつきません(m_ m)
わかる方がいらっしゃれば教えていただきますようよろしくお願いいたします(m _m)
動作環境
mac | High Sierra |
---|---|
iTerm2 | 3.3.7 |
エラー内容
/Users/xxx/Desktop
に存在する3つのjpgファイルのうちの一つを参照してエラーが発生している?
/Users/xxx/Desktop/01-11 find: 15-40-0641.jpg: unknown primary or operator error /Users/xxx/Desktop/01-17 find: 15-40-0642.jpg: unknown primary or operator error
期待する動作
/Users/xxx/Desktop/mm-dd(過去のフォルダ)
のjpgファイルの存在を確認、判定して条件分岐をさせたい
該当しそうなコード
sh
1desktopPath="/Users/xxx/Desktop/" 2 3prevOneWeekArray=($(date -v -7d "+%m-%d") $(date -v -6d "+%m-%d") $(date -v -5d "+%m-%d") $(date -v -4d "+%m-%d") $(date -v -3d "+%m-%d") $(date -v -2d "+%m-%d") $(date -v -1d "+%m-%d")) 4 5 6for prevFolder in ${prevOneWeekArray[@]}; do 7 # 1週間以内のフォルダが存在する場合 8 if [ -e "${desktopPath}${prevFolder}" ]; then 9 10 # フォルダ内にjpgファイルの有無を確認したい 11 RES=`find ${desktopPath}${prevFolder} -type f -name *.jpg` 12 if [ $? -ne 0 ]; then 13 # 予期せぬエラーの場合 14 echo "error" 15 elif [ -z "$RES" ]; then 16 # 存在しない場合 17 echo "jpg does not exist" 18 else 19 # 存在する場合 20 echo "jpg exist" 21 fi 22 fi 23 let i++ 24done
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/17 20:35