02.04.2010 23:55
digiwhite — Как найти и удалить пустые директории и файлы
ОригиналВопрос: Как я могу найти пустые директории, которые не содержат ни одного файла в Linux? А так же, как я могу найти все пустые файлы (те, которые имеют нулевую длину)?
Ответ: Вы можете использовать unix команду find, чтобы получить список всех пустых файлов и директорий так, как это описано ниже.
Итак. Для поиска всех пустых директорий в текущей необходимо использовать find с параметром -empt
1 |
|
Для удаления всех пустых директорий в текущей можно воспользоваться следующей командой:
1 |
|
Примечание: само-собой разумеется, что не рекомендуется удалять пустые директории из системных каталогов, например таких как /etc/.
Для поиска пустых файлов в текущей директории можно снова воспользоваться командой find с параметром -empty:
1 |
|
Примечание: обычно пустые файлы создаются некоторым программами как своего рода марекры или как файлы блокировки или же как файлы-сокеты для обеспечения передачи данных.
Сколько же пустых файлов находится в текущей директории (и всех ее поддиректориях)? Для ответа на этот вопрос воспользуемся конвейером команд для передачи информации из команды find утилите wc:
1 |
|
Сколько же тогда непустых файлов находится в текущей директории (и ее поддиректориях)?
1 |
|
Примечание: в команде find опция -not инвертирует значение следующей за ней опцией.
Во всех вышеописанных примерах можно заменить точку ( . ) - символ, обозначающий текущую директорию на любой другой путь к папке, в которой вы желаете произвести поиск файлов (ну или директорий).

+ 0 -
Возможно интересный будет блог.
Статьи там появляются каждую среду и пятницу. Они довольно таки разноплановы. Надеюсь что смогу более-менее регулярно выдавать переводы. Но опять таки же - не все подряд я думаю.
Хм, уже подобное было на rus-linux.net, после чего индус с гик-стафа написал "Караул, я не давал согласия", и все это товарищам пришлось свернуть :(
Тогда я напишу автору и уточню данный вопрос. Если он все же будет против, тогда сверну это дело.
=))) Да, лучше делать так.
Уже с кем только не договаривался, французы, австралийцы, британцы, американцы.
Но в основном все не против если пишешь, что они источник, а ты делаешь перевод.
Самый шумный инцидент был с французами =) Но мы потом через гуглопереводчик приписывались и договорились.
Уже с кем только не договаривался, французы, австралийцы, британцы, американцы.
Но в основном все не против если пишешь, что они источник, а ты делаешь перевод.
Самый шумный инцидент был с французами =) Но мы потом через гуглопереводчик приписывались и договорились.
Автору написал, жду ответа.
я тоже переводил одну его статью (http://welinux.ru/post/715/). мне он не разрешил выкладывать полные переводы, а только начало и ссылку на его сайт.
так что, будем читать, как есть
мне он не разрешил выкладывать полные переводы
Почему ты мне об этом не сказал?
В след раз прошу говорить.
А можно к вам присоединиться? (ради практики в английском и не только) =))
find .-type d -empty -exec rmdir {} \;
у меня так не получилось. удалял вот так:
find . -type d -empty -delete
Лучше тогда так:
чтоб не было ВНЕЗАПНОСТЕЙ с пробелами в именах файлокаталогов.
find . -type d -empty -print0 | zargs -0 rm -rf
чтоб не было ВНЕЗАПНОСТЕЙ с пробелами в именах файлокаталогов.
Только вот одного я не пойму: зачем сотый раз перепечатывать «man find»? Неужели стольким людям и правда лень прочитать хорошо написанный подробный ман?
К сожалению я поторопился и в том моя вина. Ramesh ответил мне и указал на их copyright на сайте. Ниже ответ на письмецо:
Dmitry,
You cannot translate our article and reproduce on other site. It's against our copyright policy: http://www.thegeekstuff.com/copyright
We spend tons of time creating high quality articles, which you cannot simply translate and reproduce on other website. Hope you understand.
~ Ramesh
http://www.thegeekstuff.com
Таким образом автор не дал разрешение на размещение переводов. Вот так вот. Вероятно блог надо удалить.
Dmitry,
You cannot translate our article and reproduce on other site. It's against our copyright policy: http://www.thegeekstuff.com/copyright
We spend tons of time creating high quality articles, which you cannot simply translate and reproduce on other website. Hope you understand.
~ Ramesh
http://www.thegeekstuff.com
Таким образом автор не дал разрешение на размещение переводов. Вот так вот. Вероятно блог надо удалить.
А если предложить присылать им переводы и пусть у себя выкладывают? Им польза, что на их сайт ходят за их статьями. Всем - что читать проще, ну и лицезреть свое имя около статьи как переводчика, тоже неплохо :)
Правда... Тут они скорее всего захотят, чтобы переводы тогда были уж всего и стабильно. Что может осложнить задачу :)
Ну тут же еще Zereal и Shtsh предлагали помощь в переводах. Соответственно это дело можно организовать. Будет ли профит от этого welinux`у, вот в чем вопрос? Но вообще идея вроде не плохая, можно Рамешу предложить это.
Да хз, по факту профита сюда никакого.
Только если договориться на что-то вроде:
Тогда хоть какой-то профит :)
Только если договориться на что-то вроде:
...
Перевел: MagoBuono
http://welinux.ru/
Перевел: MagoBuono
http://welinux.ru/
Тогда хоть какой-то профит :)
Сюда можно постить ссылки, так что не надо его удалять. Часть мылинуксоидов же знает английский.
питон тож могет ;)
очередные однострочника от меня
удаляет пустые файлы
удаляет пустые дириктории (рекурсивно)
Разница существенная только в функциях: remove и removedirs; в определении пустоты: listdir и getsize; ну и цыферках 1 и 2, кто знает выдачу os.walk - тот сам поймет
очередные однострочника от меня
python -c 'import os; map(lambda x: os.remove(x), filter(lambda x: not os.path.getsize(x), map(lambda x: os.sep.join(x), reduce(lambda x,y: x+y, map(lambda x: zip(*x), <((l<0>,)*len(l<2>),l<2>) for l in os.walk(os.getcwd())>)))))'
удаляет пустые файлы
python -c 'import os; map(lambda x: os.removedirs(x), filter(lambda x: not os.listdir(x), map(lambda x: os.sep.join(x), reduce(lambda x,y: x+y, map(lambda x: zip(*x), <((l<0>,)*len(l<1>),l<1>) for l in os.walk(os.getcwd())>)))))'
удаляет пустые дириктории (рекурсивно)
Разница существенная только в функциях: remove и removedirs; в определении пустоты: listdir и getsize; ну и цыферках 1 и 2, кто знает выдачу os.walk - тот сам поймет
Да, питон может. Перл тоже может то же самое. Однако в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С.
Сравни длину, логичность и лёгкость запоминания-воспроизведения строчки на баше+find со строчкой на питоне и ты достигнешь просветления.
Сравни длину, логичность и лёгкость запоминания-воспроизведения строчки на баше+find со строчкой на питоне и ты достигнешь просветления.
* да и любой более-менее тьюринг-полный язык может решить любую вычисляемую задачу, которой является та, что поставлена в статье.
дык я ж не спорю, оно наверняка еще и медленней работает...
просто под руку попалось, когда в функциональном подходе разбирался ;)
надо бы замутить топик про однострочники.
просто глянуть, куда может "дух" завести...
просто под руку попалось, когда в функциональном подходе разбирался ;)
надо бы замутить топик про однострочники.
просто глянуть, куда может "дух" завести...