metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-06-04 08:05 pm

Линуксовое

Уткнулся в шизу, которая мне в линуксе по жизни была малопонятна всегда.

Есть, предположим, 1000 файлов в папке. Из них 100 нужно перенести в другую папку, за исключением нескольких, причем критерий выбора этих 100 и пропускаемых из них нескольких в лучшем случае формулируется "содержит заданную подстроку в имени", а в худшем "выбираются вручную".
Вот как бы это сделать из командной строки, потому что очевидное решение "запустить mc, выделить руками и перенести" выглядит виндоюзерским читерством :)

Файлы с пробелами и прочими жыдосимволами в именах, поэтому приходится делать -print0
find . -maxdepth 1 -name "*.mkv" -print0 | xargs -0 mv {} итд итп

Походу, пока писал поцст в ЖЖ, уже нашел как сделать: нужно скомбинировать условия в find операторами:
find . -maxdepth 1 -name "*.mkv" ! -iname "*clowns*" ! -iname "*mimes*" -print0 | xargs -0 mv {} NotAboutClowns/


PS: от жеж хитрожопие - оно ему еще и параметры передает сразу все, нужно целевую папку указывать до остальных параметров: mv -t NotAboutClowns/

[identity profile] lionet.livejournal.com 2010-06-04 11:26 pm (UTC)(link)
Ну а что тогда, `echo *` и вперёд!

[identity profile] elf-from-lorien.livejournal.com 2010-06-06 01:44 am (UTC)(link)
Хм. И что это дает, кроме замены ls?

[identity profile] lionet.livejournal.com 2010-06-07 01:32 am (UTC)(link)
Расширение списка cd и mc в два раза.