ディレクトリーツリー内の特殊文字と空白で最も古いファイルを見つけて削除するにはLinux bashスクリプトの構築に役立つ助けが必要です条件が満たされた場合。ディレクトリツリー内の特殊文字と空白で最も古いファイルを見つけて削除する場合
私はこのような質問をフォーラムで検索しています。ユーザーのおかげで、私は下に見られるように出力を得ました。これまでは、出力ファイル名をrmにパイプして削除する方法を理解できませんでした。
目的は、hddが完全に実行されているかどうかをチェックし、そうであれば空き領域要件が満たされるまで最も古いファイルを削除することです。問題は
この
は私がなってしまったものです...ファイル名は、特殊文字と白いスペースで満たされていること、である(ここでは、ユーザーに感謝!):出力を与えるfind /mnt/volume0/recordings/ -type f -printf '%T+ %p\n' | sort | head -q -n 1 | cat
:
2016-03-11+19:21:44.2814042100 /mnt/volume0/recordings/some folder (R)/some filename (R)2016-03-1119-00.ts
ファイルを削除するためにrmにパイプされたすべての特殊文字と空白を含むファイルへのフルパス名を選択するにはどうすればよいですか? anwered POST1からの出力:
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\n' | sort -d | head -n1
2016-03-11+19:21:44.2814042100 /mnt/volume0/recordings/VIDEO_FILE (R)/VIDEO_FILE (R)2016-03-1119-00.ts
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\n' | sort -d | head -n1 | xargs -I{} echo rm -f "{}"
rm -f 2016-03-11+19:21:44.2814042100 /mnt/volume0/recordings/VIDEO_FILE (R)/VIDEO_FILE (R)2016-03-1119-00.ts
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\n' | sort -d | head -n1 | xargs -I{} rm -f "{}"
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\n' | sort -d | head -n1
2016-03-11+19:21:44.2814042100 /mnt/volume0/recordings/VIDEO_FILE (R)/VIDEO_FILE (R)2016-03-1119-00.ts
編集:ここでは
は答えポストから出力されます。 ...をsorontar提案からの出力、まだ動作していないが、新しい提案が唯一のディレクトリ名を与え、ファイルではありませんNEW出力:まだ...
EDIT2に動作していない
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\0' | sort -zk1,1 | head -n1 -z | cut -zd ' ' -f2
/mnt/volume0/recordings/Parneviks
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\0' | sort -zk1,1 | head -n1 -z | cut -zd ' ' -f2 | xargs -0 -I{} echo rm -f "{}"
rm -f /mnt/volume0/recordings/Parneviks
最も古いもののファイルは
[email protected]:~# find /mnt/volume0/recordings/ -type f -printf '%T+ %p\0' | sort -zk1,1 | head -n1 -z
2016-03-11+19:21:44.2814042100 /mnt/volume0/recordings/Parneviks (R)/Parneviks (R)2016-03-1119-00.ts
です。
EDIT3: -f2の代わりに-f2を使用しました。皆さん、ありがとうございました!
正しい行は次のようになります。
find /mnt/volume0/recordings/ -type f -printf '%T+ %p\0' | sort -zk1,1 | head -n1 -z | cut -zd ' ' -f2- | xargs -0 -I{} rm -f "{}"
問題が解決してうれしいです!それは、未来のために答えを質問に編集すべきではないということです。質問と回答を別々にすることは、コミュニティがそれぞれのメリットで投票することができるということです。 (ここでは良い答えがありますが、*良い答えがない*場合は、質問に編集するよりも自分の答え*を回答*として追加する方が良いでしょう)。 –
(同様に、気になる人のための完全なdiff形式の編集履歴を持つインターフェースを実際に持っているので、ローカルの設定では、以前に見たことのない人にできるだけ明確に読むための質問と回答を書く/編集することです。最後に呼び出された編集を持っている)。 –
申し訳ありません。これは私の最初の投稿でした。私はちょうど問題を解決したことを明確にしようとしました。私は将来を考えています。再びすべての貢献者に感謝します。 – greddost