Powiedzmy, że mam takie drzewo katalogów:
FOLDER:
file1
file2
file3
Subfolder1:
file1
file2
Subfolder2:
file1
file2
Gdybym użył rm -r FOLDER/*
, wszystko w FOLDERZE zostałoby usunięte, łącznie z podkatalogami. Jak mogę usunąć wszystkie pliki w FOLDERZE i jego podkatalogach bez usuwania rzeczywistych katalogów?
źródło
Jeśli twoja wersja
find
nie obsługuje-delete
, możesz użyć następujących elementów, aby usunąć każdy plik w bieżącym katalogu i poniżej.źródło
-exec rm {} +
byłoby szybsze, zwłaszcza jeśli jest dużo plików.find . ! -type d -exec rm {} +
usuwa sym łącza, jak również.find
nie obsługuje-delete
, prawdopodobnie też nie obsługuje-exec ... {} +
. Zalecanym sposobem radzenia sobie z tym jestfind ... -print0 | xargs -r0 rm
(jeśli oczekuje się wielu potencjalnych dopasowań).-exec ... {} +
jest POSIX, ale-delete
nie jest. (-print0
find
implementacje inne niż POSIX, które były obsługiwane,-print0
ale nie obsługiwane-exec ... {} +
(-delete
choć nie pamiętam o tym ). Jeden był na OS X, drugi na Solarisie (kilka lat temu na bardzo konserwatywnie zaktualizowanym systemie). Można również zastąpić-print0
z-printf '%p\0'
. W każdym razie jest to Ask Ubuntu, a nie Unix i Linux, a Ubuntu używa GNU find od zawsze.