Chciałbym uruchomić wiersz poleceń:
cd ~/www/tmp/; rm -P 2*
Ale pojawia się błąd, jeśli nie ma plików zaczynających się od 2.
Można by pomyśleć, że chciałbym jednak użyć -f
:
-f Attempt to remove the files without prompting for confirmation, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.
I zrobić dbają o pliku permissions- czy jest coś dziwnego dzieje wolałbym polecenie Przerwij. Chcę tylko ukryć błędy „nie istnieją”.
Przejrzałem inne pytania z „błędami rm” i znalazłem te dwa, które wydają się (trochę) istotne:
Usuń pliki i katalogi według ich nazw. Brak takiego pliku lub katalogu
Ale nie rozumiem wszystkiego, co dzieje się w odpowiedziach na to pytanie, i nie wiem, że go potrzebuję?
touch
Hack zaproponował w tej kwestii:
Czy rm nie zgłosił braku pliku?
Wydaje się to wykonalne, ponieważ nie sądzę, żebym miał na myśli poprawę wydajności (ale jaki typ wydajności miałbyś podjąć?
Nie jestem pewien, jak zrobiłbym to if-then
w linii poleceń.
Czy są jakieś inne opcje prostego czyszczenia wiersza polecenia z wklejaniem i wklejaniem?
Czy find -delete
lepiej by działało w moim przypadku? Jeśli tak, to dlaczego?
omawiany błąd:
rm: 2*: No such file or directory
źródło
rm
więc musisz powiedzieć, co to jest.zsh
jako interaktywnej powłoki? Czy pojawia sięNo matches found
błąd?2*
do rm zamiast rozszerzać go do listy plików. Spójrz na ten błąd: mówi, że rm narzeka, a nie sh / bas / zsh / ...Odpowiedzi:
Aby wywołać tylko
rm -P
dla istniejących zwykłe pliki, których nazwy pasują do wzorca w katalogu (ale nie poniżej):Na przykład,
Aby dopasować tylko nie-katalogi, użyj
! -type d
zamiast-type f
. Różnica polega na tym,! -type d
że dotyczy to szerszego zakresu typów plików (dowiązania symboliczne, nazwane potoki, gniazda itp.)Ponieważ chcesz zostać poproszony o wykryto pewne warunki na plikach, należy nie używać
-delete
zamiast-exec rm
od który działa jakrm -f
.Usuń,
-maxdepth 1
abyfind
rekurencyjnie przeglądać podkatalogi.źródło
! -type d
może być bliżejrm 2*
?find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +
-P
.-type f
, ale nie wiedziałem, jak się takrm
zachowywać - więc sugestia @ Kusalanada była trafiona, a różnicowanie / objaśnienie jest świetne do nauki.rm 2*(.)
w zsh).