2016-12-29 3 views
1

Предположим, что у меня есть каталог, который выглядит как:Как удалить все файлы, которые пусты в каталоге?

-rw-r--r-- 1 some-user wheel 0 file1 
-rw-r--r-- 1 some-user wheel 257 file2 
-rw-r--r-- 1 some-user wheel 0 file3 
-rwxr-xr-x 1 some-user wheel 212 file4 
-rw-r--r-- 1 some-user wheel 2012 file5 
.... more files here. 

Если это уместно, предположим, что имена файлов более случайным, чем просто файл #.

Как удалить только файлы, которые пусты (что означает, что файл имеет в нем 0 байтов) в каталоге, используя rm и grep или sed в некоторой форме?

+0

Stack Overflow это сайт для программирования и разработки вопросов. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

+0

Жаль об этом. Мне нужно было знать, какой сценарий очистки я пишу. Благодаря! – MisterHuac

ответ

3

Самый простой способ запустить find с -empty испытания и -delete действия, например:

find -type f -empty -delete 

Команда находит все файлы (-type f) в текущем каталоге и его подкаталогах, тесты, если совпавшие файлы пусты , и применяется -delete действие, если -empty возвращает true.

Если вы хотите ограничить операцию конкретными уровнями глубины, используйте -mindepth и -maxdepth глобальные опции.

+0

@Inian Руководство GNU 'find' указывает, что« -delete' »было представлено семейством операционных систем BSD», поэтому он должен быть более широко доступным, чем только на системах с GNU 'find'. –

+1

@BenjaminW: Cheers! не удалось найти непосредственно на этой странице ['POSIX'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html), только что подтвержденной на странице FreeBSD. – Inian

0

Команда:

cd DirectoryWithTheFiles 
rm -f $(find . -size 0) 
+3

Это прерывает имена файлов с пробелами. –

Смежные вопросы