1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

削除リストに基づくファイル削除スクリプト(Bash)

Posted at

概要

このスクリプトは、指定ディレクトリにある 削除リストファイル(delete_*.list) を順に読み込み、そのリストに記載されたファイルを削除します。
削除後、削除リストファイルは old/ ディレクトリに移動して二重実行を防止します。

スクリプト内容

#!/bin/bash
DIR=/root/work/no_loop_1/file
OLDDIR="$DIR/old"

# old ディレクトリを作成(存在しない場合)
if [ ! -d "$OLDDIR" ]; then
    mkdir -p "$OLDDIR"
fi

# delete_*.list ファイルを順に処理
for f in "$DIR"/delete_*.list; do
    [ -f "$f" ] || continue   # ファイルが存在しなければスキップ

    echo "processing $f ..."

    # 削除リスト内の各ファイルを削除
    while read -r line; do
        [ -n "$line" ] || continue   # 空行はスキップ
        rm -f -- "$line"             # ファイルを削除
    done < "$f"

    # 処理済みの削除リストは old/ ディレクトリに移動
    mv "$f" "$OLDDIR/"
done

特徴・ポイント

削除リストを使った安全なファイル削除
delete_*.list に書かれたファイルのみ削除するため、誤削除リスクが低い

二重実行防止

削除済みのリストは old/ に移動するので、同じファイルを再度処理しない

安全なファイル名処理

rm -f -- "$line" により、- で始まるファイル名やスペースを含むファイルも安全に削除可能

空行や存在しないファイルをスキップ

  • 空行を無視
  • リストファイルが存在しない場合も安全に処理

使用方法

削除対象のファイルパスを記載した delete_0.list, delete_1.list … を $DIR に置く

スクリプトを実行

bash delete_files.sh

削除済みリストは $DIR/old/ に移動されるので、過去の削除履歴として確認可能

注意点

削除対象のパスは 絶対パス で記載してください

削除対象のファイルが本当に不要であることを確認してから実行してください

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?