0
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?

特定のファイルを転送し終わった際にそのファイルを削除する方法

Last updated at Posted at 2024-11-21

はじめに

タイトル通り,特定のファイルを転送し終わった際にそのファイルを削除する方法を説明します.どこで使うんだという話について,私は実験でファイルを転送するのですが,繰り返し実験するために自動化したい時があります.その時既にファイルが転送されているとファイル転送の実験ができないため,初期化のためファイルを削除したいときがあります.そういうときのためのプログラムを紹介します.

プログラム

futa@futa-backup3:~$ cat auto_rm.sh
function auto_remover () {
watch=( -e MOVED_TO -m)
inotifywait ${watch[@]} [消したいファイルの転送先パスを入力] | while read notice
do
if [ "`echo $notice | awk "{print \$2;}" | grep MOVED_TO`" ]
then
    echo "ファイル削除"
    rm [消したいファイルの名前を入力]
else
    echo "削除対象無し"
fi
sleep 10
done
}

auto_remover &

入力が必要なのは,[消したいファイルの転送先パスを入力]と,[消したいファイルの名前を入力]の2つの部分です.基本的には,inotifyでファイルを動きを監視し,ファイルが全て転送されたら削除しているだけです.検知にCLOSE_WRITEではなくMOVED_TOを使っている理由は,ファイルを転送し終わったとき,一番最後に検知されるのがMOVED_TOだからです.検知されるファイルの状態はCREATE→OPEN→ATTRIB→MODIFY→CLOSE_WRITE→ATTRIB→MOVED_FROM→MOVED_TOの順番です.

出力結果

出力結果は以下の通りです.
image.png
指定されたファイルしか検知しないので,より汎用的にファイルを削除したい場合は,このプログラムを変更する必要があります.

0
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
0
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?