Linuxで指定したディレクトリ内のファイルのうち、最新のものだけを残し、その他を削除する方法について解説します。この記事では、特定の条件に合致したファイルを処理するためのコマンドの組み合わせ方を紹介します。
1. タイムスタンプで最新のファイルを選択
質問にあるように、特定のファイルが「✳︎」でくくられている場合、そのファイル群のうち、タイムスタンプが最新のものだけを残したいという場合には、`ls` と `tail` コマンドの組み合わせを使うと便利です。
まず、対象となるディレクトリに移動し、以下のコマンドを使ってファイルをリストアップします:
ls -lt dirTxt✳︎.txt
これにより、指定したファイルがタイムスタンプ順にリストアップされ、最新のものが一番上に表示されます。
2. 最新のファイルを除いて削除する方法
次に、最新のファイルを除いたすべてのファイルを削除する方法についてです。以下のコマンドを使用して、最新のファイルを除いてそれ以外を削除できます:
ls -lt dirTxt✳︎.txt | tail -n +2 | xargs rm
このコマンドは、まず `ls -lt` でファイルを最新順に並べ、`tail -n +2` で最新のファイルを除いた残りのファイルを取得し、`xargs rm` でそれらを削除します。
3. コマンドの細かい説明
各コマンドの役割を説明します:
- ls -lt: 指定したディレクトリ内のファイルをタイムスタンプ順でリストアップします。
- tail -n +2: 最新のファイルを除いたリストの2行目以降を取得します。`+2`は、最初の行(最新のファイル)を除外する意味です。
- xargs rm: 取得したファイルを`rm`コマンドで削除します。
4. F6コマンドへの割り当て方法(オプション)
もし、このコマンドを頻繁に使用する場合は、F6などのショートカットキーに割り当てることで、より簡単に実行することができます。ショートカットキー設定方法については、使用している端末やツールにより異なるので、使用環境に応じた設定を行ってください。
5. まとめ
Linuxで特定のディレクトリ内から最新のファイルだけを残し、それ以外を削除するためには、`ls`, `tail`, `xargs rm` などのコマンドを組み合わせて実行することで実現できます。定期的にこの処理を行う場合、スクリプト化することも可能です。

コメント