[最終更新] 2023年3月21日
どういう状況やねんという感じですが、自分はこれに遭遇するのです。そしてChatGPTにきいたら即座にいい感じのコードを出してくれたのでメモ。何度も同じこと聞くの阿呆くさいからね。
検出・削除のbashスクリプト
何も指定しないと検出のみ、-rを引数に入れると削除まで実行する。
#!/bin/bash
# 引数によって、削除を行うかどうかを設定する
delete=false
if [ "$1" == "-r" ]; then
delete=true
fi
# 現在のディレクトリ内のpngファイルをループ
for png_file in *.png; do
# 拡張子を取り除いたファイル名を取得
base_name="${png_file%.png}"
# 対応するjpgファイルが存在するか確認
if [ -e "${base_name}.jpg" ]; then
# pngファイルをリストアップ
echo "$png_file"
# 削除フラグが有効の場合、pngファイルを削除する
if [ "$delete" = true ]; then
rm "$png_file"
echo "Deleted $png_file"
fi
fi
done
なるほどそうだねという感じ。
ワンライナ bash
検出
for png_file in *.png; do base_name="${png_file%.png}"; [ -e "${base_name}.jpg" ] ; echo "$png_file"; done
削除まで
for png_file in *.png; do base_name="${png_file%.png}"; [ -e "${base_name}.jpg" ] && rm "$png_file"; done
ワンライナ fish
検出
for png_file in *.png; set base_name (string replace -r '\.png$' '' $png_file); if test -e "$base_name.jpg"; echo $png_file; end; end
削除まで
for png_file in *.png; set base_name (string replace -r '\.png$' '' $png_file); if test -e "$base_name.jpg"; rm $png_file; end; end
素晴らしい😭
おまけ: ディレクトリ内すべてのpngをjpgにする
以下の挙動のスクリプト。
- 拡張子以外が同じ名前のjpgファイルがあるかを確認する
- 存在する時はpngファイルを削除する
- 存在しない時はjpgに変換し、元のpngファイルは削除する
#!/bin/bash
# 現在のディレクトリ内のpngファイルをループ
for png_file in *.png; do
# 拡張子を取り除いたファイル名を取得
base_name="${png_file%.png}"
# 対応するjpgファイルが存在するか確認
if [ -e "${base_name}.jpg" ]; then
# jpgファイルが存在する場合、pngファイルを削除する
rm "$png_file"
echo "Deleted $png_file"
else
# jpgファイルが存在しない場合、pngファイルをjpgに変換して削除する
convert "$png_file" "${base_name}.jpg"
rm "$png_file"
echo "Converted and deleted $png_file"
fi
done
やりたいことはこれでよかったと後で気づいた。
関連記事
AI の記事
- [2023年3月21日] bashでフォルダ内にある横長の画像フォルダだけ移動する
- ---本記事---
- [2023年3月19日] 気になったAI周りのニュース 2023-03-19 AI生成画像の著作権とか
- [2023年3月18日] DynamoDBのテーブル設計をテキストで記述したいのでChatGPT-4に教えてもらった
シェルスクリプト の記事
- ---本記事(カテゴリー内最新)---
- [2023年3月21日] bashでフォルダ内にある横長の画像フォルダだけ移動する
- [2018年3月1日] crontabで気をつけていること
- [2018年1月10日] 一括で複数の画像ファイルを余白つけて正方形にする
- [2017年12月18日] bashでスクレイピングする時のメモ
- [2017年3月22日] Macでカレントディレクトリ内のpngを一括でjpgに変換する(逆も同じ)
- [2017年1月16日] Octaveの使い方、基本事項
- [2017年1月16日] Octaveで反比例の二次元グラフを描画
- [2016年5月9日] Macで複数のpngファイルをpdfに変換する
- [2016年2月23日] SC2029: Note that, unescaped, this expands on the client side. について
- [2016年2月17日] shellcheck で ls | grep が怒られた…ls の出力をパースしてはいけない?
スポンサーリンク