nixp.ru v3.0

23 ноября 2024,
суббота,
22:06:23 MSK

kir202 написал 5 октября 2006 года в 20:13 (9801 просмотр) Ведет себя неопределенно; открыл 2 темы в форуме, оставил 7 комментариев на сайте.

Как можно сделать так, чтобы удалить файлы в указанной папке и подпапках с размером = 0.

fly4life
kir202
Как можно сделать так, чтобы удалить файлы в указанной папке и подпапках с размером = 0.

Например, так:

find "/путь/до/указанной/папки" -size 0 -type f -exec rm -f {} +
myst

find /path/to/dir -type f -size 0 -delete

fly4life, четай man find :))

fly4life
myst
find /path/to/dir -type f -size 0 -delete

fly4life, четай man find :))

В man’е есть такая секция 'EXAMPLES’, посмотри, как там предлагается удалять найденные файлы ;)

Хотя, твой вариант с '-delete' мне тоже нравится больше.

kir202

Спасибо за варианты, сделал так как «myst» написал.

Еще нужно сделать так, чтобы имена файлов которые удаляются записывались в какой-нибудь файл например log.txt и внем писалось: файл «имя файла» удален из «путь где находился».

Genie

find /path/to/dir -type f -size 0 -delete -print | sed -r ’s~(.*)/(.*?)~Файл «\2» удалён из «\1»~' > /peth/to/rm_0_files.log

kir202
Genie
find /path/to/dir -type f -size 0 -delete -print | sed -r ’s~(.*)/(.*?)~Файл «\2» удалён из «\1»~' > /peth/to/rm_0_files.log

В коде ругается на «sed: illegal option --r» и создаёт файл, но он пустой.

fly4life

А так:

find "/путь/до/указанной/папки" -size 0 -type f -print -delete | awk '{print("removed null-file", $1)}' > removed_files.txt
Feuerbach


perl -MFile::Find::Rule -e 'foreach(File::Find::Rule->file->size(0)->in("/dir")){unlink and print "Removed $_\n"}'> removed_files.txt
kir202
fly4life
А так:

find "/путь/до/указанной/папки" -size 0 -type f -print -delete | awk '{print("removed null-file", $1)}' > removed_files.txt

Всё работает, но происходит интересное файл removed_files.txt создается не всегда с первого раза, вчём может быть причина? или это у меня какой-то косяк?

fly4life
kir202
Всё работает, но происходит интересное файл removed_files.txt создается не всегда с первого раза, вчём может быть причина? или это у меня какой-то косяк?

А тебе надо, чтобы список дописывался в существующий файл? Тогда вместо '>' надо писать '>>’.

Ну и рекомендуется к прочтению:

http://gazette.linux.ru.net/rus/articles/abs-guide/index.html

rgo
kir202
В коде ругается на «sed: illegal option --r» и создаёт файл, но он пустой.

ну дык надо писать не --r, а -r. в ман бы заглянул для разнообразия.

Genie
В коде ругается на «sed: illegal option --r» и создаёт файл, но он пустой.

и где это в моём коде ты нашёл «--r»?

kir202
Genie
и где это в моём коде ты нашёл «--r»?

Это не в коде «--r» это пишется после выполнения.

Heavy

Читай «man sed». Надо писать не --r, а -r (перед r ОДНО тире)

kir202

Всё разобрался сделал по примеру «fly4life». Спасибо всем за советы.

fly4life
Heavy
Читай «man sed». Надо писать не --r, а -r (перед r ОДНО тире)

Воблин. Хоть бы кто попробовал. Например:

sed -Ф 'blablabla'

Надеюсь, намёк не придётся объяснять по слогам ;).

Genie
Надеюсь, намёк не придётся объяснять по слогам ;).

гы. а нефиг пользоваться не-GNU sed-ом… ;))))

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.