удаление всего файла определенного размера

у меня есть набор файлов журнала, и я должен удалить файлы некоторых небольших размеров, которые были ошибочными файлами, которые были созданы. (63 байта). Я должен скопировать только те файлы, которые имеют данные в нем.

5
задан AlgoMan 8 June 2010 в 00:10
поделиться

3 ответа

Shell (linux);

find . -type f -size 63c -delete

Будет перемещаться по подкаталогам (если вы не укажете иное)

18
ответ дан 18 December 2019 в 05:31
поделиться

В Perl это выглядит так

perl -e 'unlink grep {-s == 63} glob "*"'

Хотя, всегда хорошая идея проверить, что это будет делать перед запуском:

perl -le 'print for grep {-s == 63} glob "*"'

Если вы хотите пройтись по всему дереву каталогов, вам понадобятся другие версии:

#find all files in the current hierarchy that are 63 bytes long.
perl -MFile::Find=find -le 'find sub {print $File::Find::name if -s == 63}, "."'

#delete all files in the current hierarchy that 63 bytes long
perl -MFile::Find=find -e 'find sub {unlink if -s == 63}, "."'

Я использую $File::Find:: name в версии поиска, чтобы вы получили весь путь, в версии развязки он не нужен, потому что File::Find меняет каталог на каждый целевой каталог и устанавливает $_ в качестве имени файла (именно так -s и unlink получают имя файла). Вы также можете посмотреть grep и glob

5
ответ дан 18 December 2019 в 05:31
поделиться

Поскольку вы отметили свой вопрос словом «python», вот как это можно сделать на этом языке:

target_size = 63
import os
for dirpath, dirs, files in os.walk('.'):
    for file in files: 
        path = os.path.join(dirpath, file)
        if os.stat(path).st_size == target_size:
            os.remove(path)
11
ответ дан 18 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: