2017-09-28 25 views

答えて

0

あなたは、あなたがこれを使用することができ、最も古い変更されたファイル(作成されていない)を削除しようとしている場合:

rm "$(ls -t | tail -1)" 
+0

OPが_oldest作成fileS_言った、awk一部を変更する必要があり、それは例えばで失敗: "$(lsの-t |尾-2)" 'のLS'。 –

1

このコマンドは、希望正確に何だろうが、

find . -mindepth 2 -type f -printf '%T+ %p\n' | sort | awk 'NR==1{print $2}' | xargs rm -v 

簡単な説明、

  • find . -mindepth 2 -type f -printf '%T+ %p\n'は:2分の深さを制限し、それがfindのみ翔だろう手段サブディレクトリの下にあるファイル、さらにはそれ以上のファイル。そして、ファイルの最終更新時刻とその名前を表示します。
  • find ...の出力をsortにパイプして、見つかったすべてのファイルの変更時刻をソートします。
  • awk 'NR==1{print $2}':使用してサブディレクトリ名を渡すために削除し、さらに要求のために最も古いファイル

Eidt

awkへの出力が

  • xargs rm -v最も古いファイルの名前を取得するためのパイプ変数は、ここでは変更されたメソッドを使用します。あなただけ

    $ a="sub_dir1" 
    $ b="sub_dir2" 
    $ find ... | sort | awk -v a=$a -v b=$b '$2 ~ "./" a "/" || $2 ~ "./" b "/"{print $2 ;exit}' | xargs ... 
    
  • +0

    同意します。別のスクリプトからこのコマンドを含む関数を呼び出します。ここでは、そのスクリプトからサブフォルダ名(A/B/Cとして)を渡したいと思います。このスクリプトから他のスクリプトの関数をサブフォルダ名としてパラメータで呼び出す方法は? – Anony

    +0

    @Anony、私の変更を参照してください。 – CWLiu

    +0

    うまく動作します。ありがとうございます。Bの中のファイルを削除する必要がない場合、そのディスクの使用状況に応じてA/Cに移動する必要があります。どのように?私はdelete_functionからだけこれをやりたいです – Anony

    関連する問題