rm wszystkie wyniki mdfind, obsługa nazw ścieżek ze spacjami

1

Rozwiązałem to już za pomocą sed, ale musi istnieć lepszy sposób na radzenie sobie ze spacjami. Wpadłem na to również z kilkoma moimi skryptami.

mdfind '(kMDItemFSName=*.ipsw)'

zwraca

/Volumes/disk/november 2014/Users/someuser/Library/iTunes/iPhone Software Updates/iPhone4,2_6.1_12B411_Restore.ipsw

gdy próbuje się to potokować, pęka z powodu przestrzeni. wypróbowałem kilka metod, w tym

rm $(mdfind '(kMDItemFSName=*.ipsw)')

mdfind '(kMDItemFSName=*.ipsw)' |xargs rm -vf

jedynym rozwiązaniem, jakie znalazłem, było

mdfind '(kMDItemFSName=*.ipsw)' |sed -e 's/ /\\ /g' |xargs rm -vf

ale musi być lepszy sposób.

Dzięki za pomoc!

jakethedog
źródło

Odpowiedzi:

4

Możesz użyć mdfind -0do wydrukowania znaku zerowego po każdej ścieżce. Następnie, xargs -0aby przeanalizować listę dla każdego znaku null zamiast używać domyślnej białej spacji.

Kent
źródło
to działa, co więcej mogę powiedzieć
jakethedog
Mam ten sam problem. Czy ktoś mógłby rozwinąć tę odpowiedź? Nie rozumiem, co dokładnie zrobić z informacjami.
Jonathan van Clute
@JathanathanvanClute, jaki masz problem? Jeśli potrzebujesz pomocy z mdfind, sugeruję otwarcie nowego pytania. Ten dotyczy głównie uruchamiania komendy na każdym z wyników mdfind (w tym przypadku jest to „rm -vf”), gdy lista mdfind ma ścieżki zawierające białe spacje. Mówiąc mdfind, aby umieściła znak zerowy na końcu każdego znalezionego elementu, i nakazując xargs, aby szukał znaku zerowego przy podejmowaniu decyzji, które wyniki uruchomić polecenie, oryginalne pytanie zostało rozwiązane.
Kent
Mam problem ze spacjami w ścieżce i mdfind, ale wydaje się, że naprawiłem to, cytując zmienną, która przechowywała ścieżkę zawierającą spację. Mój problem polegał na tym, że nie mam pojęcia, o czym mówi odpowiedź. Nie jestem programistą, więc ta odpowiedź jest w gruncie rzeczy fragmentem, który, choć wydaje się, że odnosi się do mojego dokładnego problemu, nie został wystarczająco rozwinięty, abym miał pomysł, jak go użyć. Myślę, że już jestem ustawiony, więc i tak dzięki!
Jonathan van Clute,
Odpowiedź można poprawić za pomocą kilku objaśnionych przykładów? jak mdfind -0 -name IMG_1910 | xargs -0 ls -li(z wyjaśnieniem - czy to pomogłoby, @JathanathanvanClute?)
Matthew Elvey