Ik begrijp dat ik find . -name ".DS_Store"
naar vind alle .DS_Store-bestandenin de huidige map en alle submappen. Maar hoe kan ik ze tegelijkertijd van de opdrachtregel verwijderen? Ik vond het echt vervelend om heen en weer te schakelen naar alle mappen en deze een voor een te verwijderen.
Antwoord 1, autoriteit 100%
find
kan dat. Voeg gewoon -delete
toe:
find . -name ".DS_Store" -delete
Antwoord 2, autoriteit 15%
find . -name ".DS_Store" -print -delete
Hiermee worden alle bestanden met de naam .DS_STORE
in het huidige pad verwijderd, terwijl ook hun relatieve paden worden weergegeven
Antwoord 3, autoriteit 2%
U kunt ook uitgebreide globbing gebruiken (**
):
rm -v **/.DS_Store
in zsh, bash 4 en soortgelijke shells (indien niet ingeschakeld, activeer door: shopt -s globstar
).
Antwoord 4, autoriteit 2%
De beste manier om dit netjes te doen, is door het volgende te gebruiken:
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"
Hiermee worden de bestanden verwijderd, verbergt “toestemming geweigerd”-fouten (terwijl andere fouten behouden blijven), en drukt een schone lijst met verwijderde bestanden af.
Antwoord 5
Hier leest u hoe u het bestand .DS_STORE
recursief kunt verwijderen
Terminal openen
Ga in de opdrachtregel naar de locatie van de map waar alle bestanden en mappen zich bevinden:
cd to/your/directory
Typ vervolgens het onderstaande commando:
find . -name '.DS_Store' -type f -delete
Druk op Enter
Proost!!
Antwoord 6
Maak een nieuw bestand met een teksteditor, kopieer en plak de volgende tekst erin, sla het op met de bestandsextensie “.sh” en open het bestand met Terminal. Zorg ervoor dat de teksteditor de onbewerkte tekst daadwerkelijk opslaat en het bestand niet opslaat als een Rich Text Format-bestand of een ander tekstbestandsformaat met aanvullende informatie in het bestand.
#!/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
Antwoord 7
Dit was niet precies de vraag, maar als je de map echt wilt zippen zonder die .DS_STORE
-bestanden, werkt dit een plezier…
zip -r -X archive_name.zip folder_to_compress