2012-10-02 12:18:00 +0000 2012-10-02 12:18:00 +0000
39
39
Advertisement

Linuxで特定の文字列で始まるすべてのファイルを削除する方法

Advertisement

ディレクトリツリー内の名前NAMEで始まるファイルをすべて見つけて、1つのシェルコマンドを使ってこれらのファイルをすべて削除する必要があります。

Advertisement
Advertisement

回答 (7)

68
68
68
2012-10-02 12:19:23 +0000

カレントディレクトリとそのサブディレクトリの中で、ファイル名が “foo "で始まるファイルをすべて削除する。

$ find . -type f -name foo\* -exec rm {} \;

注意: 注意して使用してください - 最初にバックアップしてください - 最初にドライランもしてください。

29
29
29
2016-07-28 10:51:24 +0000

私はこの方法を試してみましたが、以下のコマンドを試してみてください。

rm -rf Example*

ここでの “Example "は全てのファイルに共通のテキストです。

11
Advertisement
11
11
2012-10-02 12:22:38 +0000
Advertisement

findが使えます。

find . -name "name*" -exec rm {} \;
3
3
3
2017-02-24 03:17:48 +0000

globstarオプション](https://www.gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin) (shopt -s globstarで有効にする):

rm -f **/NAME*

**/ ./*/*/*/*/*/*/NAMEなどと展開します。rmで始まるdirectory名がある場合、コマンドはrmがディレクトリを削除できないと文句を言いますが、それだけです。

グロブが多数のファイルにマッチする場合、これはコマンドラインの長さの制限にぶつかる可能性があることに注意してください。

find . -type f -name 'NAME*' -exec rm -f {} +

(+ 文を閉じるために \; の代わりに -exec を使用していることに注意)

3
Advertisement
3
3
2012-10-02 12:48:10 +0000
Advertisement

名前に名前がついているファイルをすべて削除するには、

find . -name 'name*' -exec rm {} \;
```と使います。
2
2
2
2018-08-27 16:28:09 +0000

find . -name 'foo'* -type f -delete が一番シンプルな答えのようです。

どのファイルが削除されるかを確認するために、前に-deleteフラグを付けずにこれを実行することができます。

-1
Advertisement
-1
-1
2015-03-30 06:04:34 +0000
Advertisement

ファイル/フォルダの「Inode」番号を検索し、inode番号を使って削除します。以下は例です:

ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p

find . -inum 3407873 -exec rm -rf {} \;
Advertisement

関連する質問

6
10
11
5
2
Advertisement