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

Hoe verwijder je alle bestanden die beginnen met een bepaalde string in Linux

Ik moet alle bestanden vinden die beginnen met de naam NAME in een mapstructuur en al deze bestanden verwijderen met één shell commando.

Antwoorden (7)

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

Verwijder alle bestanden in de huidige directory en zijn sub-directories waarvan de bestandsnaam begint met “foo”:

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

NB: wees voorzichtig - maak eerst een back-up - doe ook eerst een test, bijvoorbeeld

$ find . -type f -name foo\*

geeft alleen de namen van de bestanden die verwijderd zouden worden.

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

Ik heb deze manier geprobeerd het werkt voor me probeer onderstaand commando.

rm -rf Example*

hier “Voorbeeld” is tekst die gemeenschappelijk is voor alle bestanden.

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

Je kunt find gebruiken:

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

Met de optie globstar (inschakelen met shopt -s globstar):

rm -f **/NAME*

**/ breidt uit naar ./, */, */*/, */*/*/ enz. Als je een directory naam hebt die begint met NAME, zal het commando klagen dat rm geen directories kan verwijderen, maar dat is alles.

Merk op dat dit tegen lengtebeperkingen van de opdrachtregel kan aanlopen als de glob met veel bestanden overeenkomt.

Als alternatief, met zo weinig mogelijk aanroepen van rm, maar zonder beperkingen in de lengte van de commandoregel:

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

(Let op de + in plaats van \; om het -exec statement af te sluiten).

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

Om alle bestanden te verwijderen die naam hebben, kunt u het volgende gebruiken:

find . -name 'name*' -exec rm {} \;
2
2
2
2018-08-27 16:28:09 +0000

find . -name 'foo'* -type f -delete lijkt het eenvoudigste antwoord.

Je kunt dit ook zonder de vlag -delete uitvoeren om te zien welke bestanden er verwijderd worden.

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

Zoek naar het “Inode” nummer van het bestand/map en verwijder het dan met behulp van het inode nummer. Hieronder staat een voorbeeld:

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

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