2013-06-17 4 views
2

я получил большую папку с изображениями, которые мне нужно объединить, и я управлял первый шаг, используя следующие:Рекурсивный переместить все файлы в одну папку, держа большой

find ./products_raw -type f -exec cp {} products_processed \; 

Однако папка структура, из которой они идут, также включает в себя эскизы с тем же именем, что и до удачи, размер изображения которого попадает в папку. Моя логика заключается в том, что если я могу проверить, больше ли файл, скорее всего, он будет правильным. Не уверен, как этого добиться, обычные обыски не показывают ничего слишком ясного.

Cheers!

EDIT: Если уже упоминалось, я использую OSX

ответ

0

Вы можете использовать тест -size для find команды, например, чтобы найти все файлы размером более 1 МБ:

find ./products_raw -type f -size +1M -exec cp {} products_processed \; 
+0

Это вызовет проблемы с дублируемыми файлами, где они оба превышают 1 МБ, или wh Самый большой файл с заданным именем (например) 500K. –

2

Ну, ответ довольно прост.

Сначала вы получите список файлов с их размерами:

find . -type f -printf '%s\t%f\t%p\n' 

Там будет 3 колонки: размер, имя файла, путь к файлу (с именем).

Тогда вы сортировать его по размеру, чтобы сделать большие файлы раньше:

find . -type f -printf '%s\t%f\t%p\n' | sort -nr 

тогда, вы передаете его через AWK удалить повторяющиеся имена файлов:

find . -type f -printf '%s\t%f\t%p\n' | \ 
    sort -nr | \ 
    awk -F'\t' '!c[$2]++ {print $3}' 

и, наконец, скопировать файлы в ваш целевой каталог:

find . -type f -printf '%s\t%f\t%p\n' | \ 
    sort -nr | \ 
    awk -F'\t' '!c[$2]++ {print $3}' | \ 
    xargs -d'\n' cp -t wherever/ 
+0

Очень ясно объяснено, спасибо. К сожалению, я понял, что забыл упомянуть, что я на OSX, и в результате это не работает для меня. – Leonard

+0

Сделайте это шаг за шагом и исправьте все, что сможете. Я не могу изменить его на совместимость с OSX, потому что у меня нет ничего с OSX, чтобы проверить его. –

+0

Я отдам его, приветствую. Спасибо, что потратили время на помощь. – Leonard

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