Muszę znaleźć wszystkie pliki zaczynające się od nazwy NAMEw drzewie katalogów i usunąć wszystkie te pliki za pomocą jednego polecenia powłoki.
Muszę znaleźć wszystkie pliki zaczynające się od nazwy NAMEw drzewie katalogów i usunąć wszystkie te pliki za pomocą jednego polecenia powłoki.
Odpowiedzi:
aby usunąć wszystkie pliki, których nazwa ma nazwę --- możesz użyć
find -name . 'name*' -exec rm {} \;
grepma -execprzełącznik?
Usuń wszystkie pliki w bieżącym katalogu i jego podkatalogach, w których nazwa pliku zaczyna się od „foo”:
$ find . -type f -name foo\* -exec rm {} \;
Uwaga: używaj ostrożnie - najpierw wykonaj kopię zapasową - najpierw wykonaj próbę próbną, np
$ find . -type f -name foo\*
poda ci tylko nazwy plików, które zostaną usunięte.
find . -type f -name foo\* -deletezałatwiło sprawę
Próbowałem w ten sposób, że to działa dla mnie spróbuj poniżej polecenia.
rm -rf Example*
tutaj „Przykład” to tekst wspólny dla wszystkich plików.
Możesz użyć find:
find . -name "name*" -exec rm {} \;
Z globstaropcją (włącz za pomocą shopt -s globstar):
rm -f **/NAME*
**/rozszerza się do ./, */, */*/, */*/*/itd. Jeśli masz katalogów nazwy rozpoczynające NAMEkomenda będzie skarżą się, że rmnie można usunąć katalogi, ale to wszystko.
Zauważ, że może to napotkać ograniczenia długości linii poleceń, jeśli glob pasuje do wielu plików.
Alternatywnie, przy jak najmniejszej liczbie wywołań, rmjak to możliwe, ale bez ograniczeń długości linii poleceń:
find . -type f -name 'NAME*' -exec rm -f {} +
(Zauważ, że +zamiast \;zamykać -execinstrukcję).
find . -name 'foo'* -type f -delete wydaje się najprostszą odpowiedzią.
Możesz uruchomić to bez -deleteflagi wcześniej, aby zobaczyć, które pliki zostaną usunięte.
Wyszukaj numer „i-węzła” pliku / folderu, a następnie usuń, używając numeru i-węzła. Poniżej znajduje się przykład:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;