自分が現在いるディレクトリ内のファイルだけを削除しないようにするにはどうすればいいでしょうか?

自分が現在いるディレクトリ内のファイルだけを削除しないようにするにはどうすればいいでしょうか?

ディレクトリ内の 30 日以上経過したファイルを削除したいのですが、現在いるディレクトリの下のディレクトリにあるファイルは削除したくありません。

答え1

削除する前にファイルを一覧表示するには:

find . -maxdepth 1 -mtime +30 -type f -ls

ファイルを削除するには:

find . -maxdepth 1 -mtime +30 -type f -exec rm {} +

  • .現在のディレクトリを指定する
  • -maxdepth 1最大1レベルのディレクトリまで降りる
  • -mtime +30最終更新日が 30 日を超えるファイルのみ
  • -type f通常のファイルのみ

答え2

zshシェルには特別なワイルドカード拡張機能それは役に立つでしょう。

  • 現在のディレクトリ内の 30 日より古いファイルを一覧表示します。ls -d -- *(.m+30)

  • 現在のディレクトリ内の 30 日より古いファイルを削除します。rm -- *(.m+30)

zsh 構文の は*(.m+30)ワイルドカードであり、次の意味を持ちます。

  • *-- 任意のファイル名
  • ( ... )-- 修飾語付き...
  • .-- 通常のファイル(ディレクトリなどではない)
  • m+30-- 変更時刻が 30 日以上前である

関連情報