LINUX.ORG.RU

Помогите рассортировать кучу файлов

 


0

1

Всем привет!

Есть несколько десятков тысяч (около 100к) в 300 каталогах разнообразных файлов, txt, pdf, png, jpg. Нужно найти в текстовых файлах признаки python, например import, и переместить их в отдельную папку. А картинки удалить те, которые меньше 50-60 кб. Пытался ls вывести в cat, а там grep'ом, при том сделать рекурсивно, но у меня не получилось :(


Используй find. В мануале точно есть фильтрация по размеру, уж сам найди нужный ключик. Пример, если бы по имени нужно было удалить:

find . -name '*.tmp' -delete

А с питоновскими файлами можно grep'ом пройтись, awk'ом выделить имя файла, сделать sort'ом список уникальных имен и закинуть во временный файл. А там можно и перемещать по списку.

lu4nik ★★★
()
Ответ на: комментарий от lu4nik

А с питоновскими файлами можно grep'ом пройтись, awk'ом выделить имя файла,

проще

% file --mime-type dev/map/pymag/magellan/DBUtil.py
dev/map/pymag/magellan/DBUtil.py: text/x-python
Deleted
()
Ответ на: комментарий от lu4nik

find . -name «*.png» -size >60
find: отсутствует аргумент у `-size'

find . -name «*.txt» -size «>60»
find: Invalid argument `>600' to -size

А по-другому никак?

Pa
() автор топика
Ответ на: комментарий от Pa

man find:

find / \
       \( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
       \( -size +100M -fprintf /root/big.txt %-10s %p\n \)

       Traverse  the filesystem just once, listing setuid files and directories into /root/suid.txt and
       large files into /root/big.txt.
lu4nik ★★★
()
Ответ на: комментарий от lu4nik

C + работает, спасибо, получилось создать список нужных картинок. Прочитал man mv, но там нету опции считать список из файла. Погуглил аналогичный мануал, в нем тоже нету. Подскажите куда смотреть?

Pa
() автор топика
Ответ на: комментарий от anonymous

Спасибо, получилось так

find . -name «*.png» -size +60 > allpng

Pa
() автор топика

картинки удалить те, которые меньше 50-60 кб

$ find . -regex '.*\(.jpg\|.gif\|.png\)' -size -60k -delete

Нужно найти в текстовых файлах признаки python, например import, и переместить их в отдельную папку

$ mkdir ~/tmp

создаешь файл ~/imps.sh при помощи любоuо текстового редактора с содержимым

#!/bin/sh
if [ "`grep import "$1"`" != "" ]; then
    cp "$1" ~/tmp/
fi
Далее
$ chmod +x ~/imps.sh
$ cd "там где твои файлы"
$ find . -name '*.txt' -exec ~/imps.sh '{}' ';'
Отобранные файлы смотришь в ~/tmp
Может есть способы и проще, но я воспользовался таким. А вообще хорошая команда find =)

evilbyte
()
Ответ на: комментарий от Deleted

Из консоли не работает, висит «>». А если в файл, то постоянно кричит на ошибку в 4 строке, т.к. редакторы добавляют пустую строку :(

Pa
() автор топика

Если консоль не принципиальна, то можно kfind
http://www.kde.org/applications/utilities/kfind/

Вложенные каталоги, фильтрация одновременно по маске, миме-типу, содержимому, метаинфе, размеру, атрибутам и т.п. Есть сохранение результатов в файл html/txt.

extrater
()
Ответ на: комментарий от evilbyte

Спасибо большое, только import, наверное, надо заменить на что-то специфичнее. А то перемещает много ненужного. Спасибо :)

Pa
() автор топика
Ответ на: комментарий от Deleted

И вам тоже спасибо :) Сейчас попробую.

Pa
() автор топика
Ответ на: комментарий от Pa

Навряд ли. Только кеды делают нормальный софт, остальные лепят примитивы.

extrater
()
Ответ на: комментарий от Pa
find -type f |
  file -f- |
  awk '/:   *[Pp]ython.*/ {gsub(/:   *[Pp]ython.*/,""); print}'
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.