Линуксовое
Уткнулся в шизу, которая мне в линуксе по жизни была малопонятна всегда.
Есть, предположим, 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/
Есть, предположим, 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/
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
no subject
cp $(pick *.txt) /kuda/to
или там
find /.../... | pick | xargs ...
Берёт список либо с ком. строки, либо со стандартного ввода, показывает диалог, там галочками отмечаем чо надо, на выводе даёт только отмеченные строки.
no subject
кавычки вокруг {} хэндлят пробелы и червей, \; - конец команды. этот вариант кошерен тем, что в случае если подходящих файлов - пара миллионов - то ваш mv грохнется из-за переполнения буфера командной строки или числа параметров, а мой - нет.
да, я встречал необходимость мувнуть два миллиона файлов, это реальная ситуация.
да, на каждый файл будет рожаться свой mv, так что возможно будет чуть-чуть медленнее.
(no subject)
(no subject)
no subject
(no subject)