1

2013-01-25(2013年1月25日)で始まりEXPORT_v1x0、日付が2013-01-25未満のUnixディレクトリからファイルを削除しようとしています。ファイルを1つずつ削除することはできますが、すべてのファイルを削除するには数日かかります。特定のパターンでファイルを削除するためのより良い方法はありますか?

以下は私がlsを行うときのサンプルファイルです

bash-3.00$ ls /data/bds/real
EXPORT_v1x0_20120811.dat.gz 
EXPORT_v1x0_20120811.dat.gz   

上記のファイルが表示された場合。各ファイルには日付があります。このファイルを考慮に入れると仮定します-

EXPORT_v1x0_20120811.dat.gz

日付です20120811ので、で始まりEXPORT_v1x0、日付が。未満のすべてのファイルを削除する必要があります20130125。したがって、日付が未満のすべてのファイルを削除することになっている場合、20130125日付が。未満であるため、上記のすべてのファイルが削除されます20130125

注:-すべてのファイルは、上記とまったく同じパターンを持っています。日付とそれに続く他の数字のみが異なります。

したがって、で始まりEXPORT_v1x0、日付が。未満のすべてのファイルを削除する必要があります20130125

私は走っていSunOSます。私はまだUnixをよりよく学ぶ過程にあります。したがって、ハイエンドのコマンドとスクリプトがわからない。

4

2 に答える 2

1

問題への最初の素朴なアプローチ、あなたのニーズに合わせてそれをtweek:

find . | awk -F'_' '$3<20130125' | xargs rm

find再帰検索を実行せず、現在のフォルダーにとどまるには、次のようにします。

find . \( ! -name . -prune \) -type f | ...

2回目の更新:

name文字列「EXPORT_v1x0」を含むリストファイルのみにパラメータを追加します

find . \( ! -name . -prune \) -type f -name "EXPORT_v1x0*" | ...

find非再帰的にする簡単な方法は、maxdepthフラグを使用することです

find . -maxdepth 1 -type f -name "EXPORT_v1x0*" | ...
于 2013-02-03T19:52:27.073 に答える
0

警告:非常に注意してください

必要なファイルを次のようにリストします。

ls -1 | awk -F _ '$3<"20130125"'

それがファイルの適切なリストを与えるなら、あなたはすることができます

ls -1 | awk -F _ '$3<"20130125"' | xargs rm
于 2013-02-03T19:52:07.780 に答える