/dev/null ファイルの移動に似た自動ガベージディレクトリ?

/dev/null ファイルの移動に似た自動ガベージディレクトリ?

テキスト出力を(リダイレクト)して/dev/null削除できます。 bashコードで簡単に有効/無効にできるので非常に便利です。

これで、ファイルを処理して処理した後に別のターゲットに移動するスクリプトがあります。簡単な例は次のとおりです。

source_dir=some/source/path
target_dir=some/target/path
for f in `ls $source_dir`; do echo $f; mv $f $target_dir; done

もはやファイルをターゲットディレクトリに移動することに興味がなく、むしろファイルの方向を削除することにした場合、これを行う最も効率的な方法は何ですか(編集されたコード行の点で)。

mvコマンドを変数に入れることも検討できます。

process_cmd=echo
finnish_cmd=mv
source_dir=some/source/path
target_dir=some/target/path
for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done

その後、次のように変更できます。

process_cmd=echo
finnish_cmd=rm
source_dir=some/source/path
target_dir=
for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done

しかし、最終的に自動的にクリーンアップされるゴミのようなターゲットディレクトリを指定できればもっと簡単になると思います/dev/null(これがコマンドrmの意味です)。mv

process_cmd=echo
finnish_cmd=mv
source_dir=some/source/path
target_dir=/dev/null # <--- is there some sort of trash folder for such tasks?
for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done

このような状況に対する明確なアプローチ/一般的なベストプラクティスはありますか?

ベストアンサー1

そのような場所がないのには非常に簡単な理由があります。無駄がないからです。世界中で使用できますmvrm。したがって、/dev/nullそれは欲求を満たすために存在するものであり、欲求/dir/garbageを満たさずに存在するものではない。

もちろん、この場合、「これを達成するための最も効率的な方法は何ですか(編集されたコード行の側面から)?」という質問を解決する必要があると主張できます。削除されtarget_dirた定義は次のとおりです。

if [ -n "$target_dir" ]; then
    # move file
else
    # delete file
fi

非常にシンプルで、何も再編集する必要はありません。 (私の考えでは、「編集」はあなたの意味ではないようです。維持するあるいは、「より簡単なメンテナンス」という名前で厄介で、悪い、誤った方法で(より悪くは医者が賢く)何かを行うことは矛盾しているので、行数を減らしてください。

つまり、1時間ごとに次のcronジョブを実行して、独自のごみ箱ディレクトリをかなり簡単に実装できます。

garbage_dir=/usr/local/garbage
for file in $garbage_dir/*; do
    rm -f -R $file;
done

おすすめ記事