1

私はシェルプログラミングが初めてです。基本的に、実行時に特定のフォルダー内の特定のファイルの種類をクリーンアップする小さなスクリプトを作成しました。

#!/bin/bash
echo "cleaning temp extensions "
find -type f -name '*.pyc' -exec rm -f {} ';' 
find -type f -name '.*.swp' -exec rm -f {} ';'
find -type f -name '*~' -exec rm -f {} ';'
echo "files cleaned!!"

しかし今、このシェルスクリプトが存在するフォルダーからすべてのファイルを消去したいと思います。

たとえば、次のようなものがある場合

 folderA/  folderB/ folderC/   clean.sh

この clean.sh を実行すると、folderA、folderB、および folderC 内のすべてのファイル タイプが削除されます。このスクリプトでどのような変更を行う必要がありますか? ありがとう。

4

3 に答える 3

2

次のように、3 つのすべての検索コマンドを 1 つに組み合わせることができます。

find -type f \( -name '*.pyc' -o -name '.*.swp' -o -name '*~' \) -exec rm -f {} \;

この検索を folderA で実行するには、次を使用します。

find folderA/ -type f \( -name '*.pyc' -o -name '.*.swp' -o -name '*~' \) -exec rm -f {} \;
于 2012-06-08T18:40:04.433 に答える
1

あなたが何を求めているのかは完全には明らかではありません。

現在のディレクトリ内のすべてのファイルを削除するには:

find . -maxdepth 1 -type -f -delete

現在のディレクトリとその下のすべてのディレクトリにあるすべてのファイルを削除するには、次の手順に従います。

find . -type -f -delete

現在のディレクトリ内のすべてのファイルとディレクトリを削除するには:

find . -delete

「このシェルスクリプトが存在するフォルダからすべてのファイル」を本当に削除したいのであれば、それはかなりおかしなことです。ディレクトリ内のファイルを削除するために、スクリプトをディレクトリにコピーするのはなぜですか?「指定されたディレクトリ内の指定された拡張子を持つファイルを削除できないようにする」という意味の場合は、次のように機能します。

#!/usr/bin/env bash

find "$@" -type f \( -name '*.pyc' -o -name '*.swp' -o -name '*.~' \) -delete

そして、これをPATHのディレクトリ(例/usr/local/bin)に保存すると、次のように言うことができます。

clean.sh folderA folderB folderC

またはあなたが望む他のもの。

于 2012-06-08T18:41:04.773 に答える
0

すべてのファイルを削除するには、-name ...フィルターを削除します。

find -type f -exec rm -f {} ';'

明らかな警告: 注意してください。

于 2012-06-08T18:40:19.187 に答える