LINUX.ORG.RU
Ответ на: комментарий от SoulThreads

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

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

Может ему так же нужет полный путь к файлу. Не знаю, умеелт ли ls такое, но find так и поступает. Например, find ~/some/path/ -maxdepth 1, если ничего не напустал. А в zsh, если не ошибаюсь, можно сократить до find ~/s/p/ -maxdepth 1.

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

Ну там уже на усмотрение ТС, find много чего ему позволит сделать.

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

Да, логично, разворачивание пути - это же дело шелла. Программа получит на вход то, что ей передаст zsh. Спасибо за уточнение, сам я zsh не юзаю.

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

фильтрацию по имени добавить к find

Это бы хорошо, но не соображу, как «[варианты]» оформить.

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

да, ещё -maxdepth 1 нужен, а то в подкаталоги полезет.

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

Загляни в man, там много интересного можно сделать с find. -iname, в отличие от -name, например, делает регистронезависимый поиск. Варианты такие же как и везде: хочешь свездочку рисуй, хочешь в скобки бери.

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

Варианты такие же как и везде

ага. А ещё есть регулярки. Иногда помогает :-)

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

угу, вроде оно. Все же, длинновато, там еще --exec и xargs

find /path/ -iname «[....]» -exec {} \; | xargs cp /other/path

Длинновато. Надо скрипт.

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

Во! Спасибо, не знал про этот ключик!

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

Не знаю, чего именно хочется, но часто хватает p ~/dir - дальше с tab-completion выбрать нужные файлы (или обычное дополнение в {..}).

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

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

cp $(ls tmp1/{a1,b1}) tmp1/tmp

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

frpaul

там еще --exec и xargs

не нужно.

find -exec cp -t /target/ {} +

frpaul

Длинновато. Надо скрипт.

какая разница, что в скрипт пихать? тоже самое на bash будет раз так в 10..100 медленнее, уже обсуждалось.

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

frpaul

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

cp $(ls tmp1/{a1,b1}) tmp1/tmp

1. с пробелами не взлетит.

2. tmp1/[ab]1 тогда уж. Или tmp1/{a,b}1 тоже можно.

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

с пробелами не взлетит.

Да, к сожалению. Стараюсь избегать.

tmp1/[ab]1 тогда уж. Или tmp1/{a,b}1 тоже можно.

Ну это уже тонкости. Я имел в виду имена типа abc, xyz - не пересекающиеся.

frpaul ★★
() автор топика

cp $(ls tmp1/{a1,b1}) tmp1/tmp

А в чем сакральный смысл ls? Без него же взлетает. А zsh дополнит, экранировав пробелы.

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

А в чем сакральный смысл ls? Без него же взлетает. А zsh дополнит, экранировав пробелы.

сакральный смысл ls наверное в конструкции

ls --quoting-style=escape | xargs cp -t target/
тут zsh не нужен.

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

тут zsh не нужен.

Никто не говорит, что необходим. Если вдуматься, станет очевидно, что имеются в виду интерактивные возможности.

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

cp -t tmp1/tmp $(ls -Q tmp1/[ab]1)

find+xargs лучше 2-мя моментами:

1) «find ... -print0 | xargs -0 ...» скопирует вообще любые имена;

2) "... | xargs -r ..." не будет даже ругаться, если файлов для копирования нет (ну то есть если в tmp1/[ab]1 не окажется файлов и/или только подкаталоги).

berrywizard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.