0

私はスクリプト初心者です。Ubunutu 10.04 サーバー用の簡単な bash スクリプトを作成して、30 日以上経過したフォルダーと別のフォルダーにある 1 年以上経過したアーカイブを削除しようとしています。これらは異なるスクリプトに配置するため、2 つの異なるコマンド ラインにすることができます。

次のことを試してみましたが、まったく機能しません。

# find ~/addon_backups/202 -name 202adata* -maxdepth 0 -ctime +30

# find ~/addon_backups/202/ME -name *.tar.gz -maxdepth 0 -ctime +365

私はそれぞれ以下を取得しています:

find: paths must precede expression: 202adata_010213.tar.gz
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

find: paths must precede expression: 0213ME-202.tar.gz
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

複数のバリエーションを試しましたが、明らかに何かが欠けています。どんな助けでも大歓迎です。

4

1 に答える 1

2

シェルが解釈しないように、パラメーターを -name に引用する必要があります ( shellcheck は自動的にそれを指摘します)。

find ~/addon_backups/202/ME -name "*.tar.gz" -maxdepth 0 -ctime +365

また、0 の-mtime代わりに-ctime,の代わりに使用したいことに注意してください。また、削除に使用できます。-maxdepth 1-exec rm () {} +

find ~/addon_backups/202/ME -name "*.tar.gz" -maxdepth 1 -mtime +365 -exec rm {} +

またはもっと簡単に:

find ~/addon_backups/202/ME/*.tar.gz -mtime +365 -exec rm {} +
于 2013-02-26T23:52:37.990 に答える