2015-05-27 10 views
15

Rozumiem, że mogę używać find . -name ".DS_STORE" do find all the .DS_STORE files w bieżącym folderze i wszystkich podfolderach. Ale w jaki sposób mogę jednocześnie usunąć je z wiersza poleceń? Zauważyłem, że denerwujące jest przełączanie się do wszystkich folderów i usuwanie go po kolei.Usuń pliki .DS_STORE w bieżącym folderze i wszystkie podfoldery z wiersza poleceń na komputerze Mac

Dzięki za radę.

+0

Patrz mój komentarz na zaakceptowanej odpowiedzi. –

Odpowiedz

40

find może to zrobić. Wystarczy dodać -delete:

find . -name ".DS_Store" -delete 
+0

Musisz naprawić plik o nazwie ** ". DS_Store" **, jeśli jest używany ".DS_STORE", nie będzie działał, ponieważ w nazwach plików jest rozróżniana wielkość liter. –

+0

@AmrLotfy To nie jest prawda, domyślny system plików mac nie rozróżnia wielkości liter – Others

+1

Dla większej ostrożności, zazwyczaj wykluczam katalogi takie jak to: 'find. -name '.DS_Store' -type f -delete' – xApple

0

Można również korzystać z rozszerzonego globbing (**):

rm -v **/.DS_Store 

w zsh, bash 4 pociski i podobne (jeśli nie jest włączony, należy aktywować przez: shopt -s globstar).

0

Utwórz nowy plik za pomocą edytora tekstu, skopiuj i wklej do niego poniższy tekst i zapisz go z rozszerzeniem pliku ".sh", a następnie otwórz plik za pomocą Terminala. Upewnij się, że edytor tekstu faktycznie zapisuje nieprzetworzony tekst i nie zapisuje pliku jako pliku Rich Text Format lub innego formatu pliku tekstowego z dodatkowymi informacjami w pliku.

#!/bin/bash 
echo -e "\nDrag a folder here and press the Enter or Return keys to delete all files whose names begin with a dot in its subfolders:\n" 
read -p "" FOLDER 
echo -e "\nThe following files will be deleted:\n" 
find $FOLDER -name ".*" 
echo -e "\nDelete these files? (y/n): " 
read -p "" DECISION 
while true 
do 
    case $DECISION in 
     [yY]*) find $FOLDER -name ".*" -delete 
     echo -e "\nThe files were deleted.\n" 
     break;; 
     [nN]*) echo -e "\nAborting without file deletion.\n" 
     exit;; 
     *) echo -e "\nAborting without file deletion.\n" 
     exit;; 
    esac 
done 
5
find . -name ".DS_Store" -print -delete 
+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać odnośnik. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ review/low-quality-posts/17012288) – kelin

+0

@kelin uh, jak to jest odpowiedź typu "link-only", gdy nie ma linku? – ppperry

+0

@ppperry, to jest automatyczna wiadomość z recenzji. Głosowałem, aby usunąć twoją odpowiedź, ponieważ nie dodaje nic ważnego w porównaniu z zaakceptowanym. – kelin

Powiązane problemy