最近変更されたファイルの削除

最近変更されたファイルの削除

私は2つのファイルを作成しました: sample.txtsample.txt (2番目のファイルにはスペースなどの隠し文字が含まれています)。最近変更されたファイルを削除する方法は?私はLinuxを使用しています。

答え1

statこれはレシピの主な成分です。echo動作がうまくいったら削除してください。

echo rm "$(stat -c "%Y:%n" * | sort -t: -n | tail -1 | cut -d: -f2-)"

プラットフォームを指定する必要はありません。これはLinuxおよびGNUツールです。

ファイル名に改行文字が含まれている場合、この方法は機能しません。

答え2

現在のディレクトリの最新のファイルを削除する簡単で信頼性の高い方法は次のとおりです。

zsh -c 'rm ./*(om[1])'

もちろん、zshを実行している場合は、

rm ./*(om[1])

このスレッドで提案されている他のソリューションとは異なり出力の解析lsまたは~のstat、これはファイル名に含まれている奇妙な文字、印刷できない文字、改行文字に関係なく機能します。

その後の括弧内の文字は次*のとおりです。グローバル予選om修正時間(最も最近のファイルから)にソートすることを意味し、[1]ソート後の最初のファイルのみを選択するという意味です。

特定のファイルを削除したい場合、変更時間に依存するのは複雑なアプローチです。代わりrm Space Tabに、正しいファイルが見つかるまでシェルが提供する完成した項目を入力して参照してください。

答え3

名前付きディレクトリーから最新のファイルを削除し、dirファイル名に改行文字が含まれていない場合は、次のようにします。

rm -i -- "$(LC_CTYPE=C ls -t dir | head -1)"

ファイル名に印刷できない文字が含まれていると、ls印刷できない文字が破損する可能性があるため、この方法が機能しない可能性があります。

そのディレクトリの最新のファイルが別のディレクトリの場合、次のエラーが発生しますrm: cannot remove ‘dir2’: Is a directory

答え4

これはこのユーティリティに依存するシェル関数ですstat。オプションのディレクトリ引数(デフォルトは現在のディレクトリ)を使用して呼び出すと、最も古いファイルの対話が.実行されます。rm一部の警告を無視するには、-iフラグをに移動しますrm。意図的にディレクトリをスキップするため、特定のディレクトリのファイルのみが調査されます。空のディレクトリをきれいに処理するためのいくつかの回避策を追加しましたshopt。ただし、これは名前にスペースと改行文字を含むファイルを処理する必要があり、処理できます。

function rmoldest {
  shoptnow=$(shopt -p nullglob)
  shopt -s nullglob
  tstamp=$(date +%s)
  file=
  dir=$1
  dir=${dir:-.}

  for f in "$dir"/*
  do
    if [ ! -d "$f" ]
    then
      y=$(stat -c "%Y" "$f")
      if [ $y -lt $tstamp ]
      then
        file="$f"
        tstamp=$y
      fi
    fi
  done
  $shoptnow
  if [ -n "$file" ]
  then
    /bin/rm -i "$file"
  fi
}

以下はサンプルの実行です(主な内容$はシェルプロンプトなので、入力しないでください)。

$ touch sample.txt; sleep 1; touch 'sample.txt '

$ ls -l
total 0
-rw-r--r-- 1 Jeff None 0 Mar 21 22:02 sample.txt
-rw-r--r-- 1 Jeff None 0 Mar 21 22:02 sample.txt

$ rmoldest
/bin/rm: remove regular empty file ‘./sample.txt’? y

$ ls -l
total 0
-rw-r--r-- 1 Jeff None 0 Mar 21 22:02 sample.txt

$ rmoldest
/bin/rm: remove regular empty file ‘./sample.txt ’? y

$ ls -l
total 0

関連情報