2016-04-11 20 views
0

ディレクトリ内のビデオファイルをチェックし、既に監視されているものを削除するbashスクリプトを作成したいと考えています。監視されたビデオを削除するためのBashスクリプト

私はstat -c %wstat -c %xを使用し、ビデオの出生と最後のアクセスを比較することを考えていました。

私はstat -c %wを使用してファイルの作成日を決定しましたが、私はstat -c %xという確信がありません。アクセス時間はいつ更新されますか?ビデオが最後に開かれたときに実際に表示されますか?アクセス時間を変更する可能性のある他のシナリオはありますか?

別の問題は、ディレクトリにあり、作業ディレクトリの「裸」ではないファイルです。私はそれらをどのように扱うべきですか?

あなたはおそらくより良い解決策を用意していますか?

+0

ファイルが持っている時間をカウントしたビデオプレーヤーを使用するには良いアイデアではないでしょう見たことがありますか? statを使って、映画やそれが何であっても完全に見えているかどうかを判断することはできません。 – aalf1987

+0

はい、この問題の私は認識していますが、私はそれを受け入れることを喜んでいます。私たちが見始めたビデオが完成するたびに終わります。 (私はまた、これがいかに楽観的かを認識しています:)) –

答えて

0

は、fstatシステムコールも使用しています。

-printfオプションはエポックからの秒数でのエポックからの秒数での修正時刻(%のT @)とアクセス時間(%の @ A)と見つかった各ファイルのファイル名を表示するために使用することができます。

もちろん、awkを使用して値を比較し、異なる時間のファイル名のみを出力することができます。

これを試してみる:

$ touch foo bar 
$ ls 
bar foo 

$ find . -type f -printf "%[email protected] %[email protected] %p\n" | awk '{if (substr($0,1,21)!=substr($0,23,21)) { print substr($0,45); }}' | xargs -I xxxx printf "%s\n" 'xxxx' 

$ cat foo 
$ find . -type f -printf "%[email protected] %[email protected] %p\n" | awk '{if (substr($0,1,21)!=substr($0,23,21)) { print substr($0,45); }}' | xargs -I xxxx printf "%s\n" 'xxxx' 
./foo 
のprintfとバージョンのテストを

find . -type f -printf "%[email protected] %[email protected] %p\n" | awk '{if (substr($0,1,21)!=substr($0,23,21)) { print substr($0,45); }}' | xargs -I xxxx printf "%s\n" 'xxxx' 

find . -type f -printf "%[email protected] %[email protected] %p\n" | awk '{if (substr($0,1,21)!=substr($0,23,21)) { print substr($0,45); }}' | xargs -I xxxx rm 'xxxx' 

多分それはのprintf で最初にテストする必要がありますが

注:これは電子ライナーコマンドは、特殊文字を含まないファイル名で作業している:N"" \など

関連する問題