Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Создание ссылок сразу на несколько файлов

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

dariusii



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть каталог с файлами. Файлов, с разными именами, около 5 тыс. И есть пустой каталог.
Нужно созздать ссылки в пустом каталоге на файлы, находящиеся в первом каталоге.
По гуглу порошка, в виде советов по ln - тысяча. Но, ни одной статьи по пакетному созданию ссылок.
 
В голову никак не лезет скрипт, который позволит это сделать. Хотя, наверняка там все просто.
 
find /some/directory/ -name * -print0 | xargs -0 ln -s;
ln: указанная цель « /some/directory/na-me.file » не является каталогом.
 
Может, проблема в отображении путей. Иногда нужны обратные слеши в отображении (как пример - моменты пробелов в путях). Но man find молчит на тему отображений. Есть printf, но как ему объяснить следовать отображению, которое съест ln -s, не совсем ясно. перехват :нуля" добавил - не то. print0 | xargs -0. В man написано, что это нужно для совместимости с xargs.

Всего записей: 2458 | Зарегистр. 08-11-2003 | Отправлено: 02:59 26-05-2011 | Исправлено: dariusii, 03:22 26-05-2011
onvova

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
может попроще
ln -s /home/user/dirname1/* /home/user/dirname2
вот без проблем  
файло - 565,756,663 байта в 4174 файлах  
симлинки - 100,176 байт в 4174 файлах

Всего записей: 21 | Зарегистр. 03-06-2008 | Отправлено: 17:10 26-05-2011
dariusii



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А, ну сам дурак - тавил кавычки в путях. Да. можно куда проще..

Всего записей: 2458 | Зарегистр. 08-11-2003 | Отправлено: 18:52 26-05-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dariusii
Есть тема «UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;». С подобными вопросами — туда. Это на будущее.
 
> find /some/directory/ -name *
Звездочка раскроется шеллом, надо экранировать или забирать в кавычки:
$ find /some/directory/ -name '*'
 
ключ -name здесь, к слову, вообще лишний:
$ find /some/directory/
 
> find /some/directory/ -name '*'
> /some/directory/*
Кстати, надеюсь, понятно, что это даст разные выборки, если в /some/directory/ есть субдиректории.
 
> find /some/directory/ -name * -print0 | xargs -0 ln -s;
Не лучшая альтернатива ключу -exec файнда.
$ find /some/directory/ -exec ln -s {} \;
 
Еще есть подозрение, что симлинки надо делать только на файлы, но не каталоги. Итого:
$ find /some/directory/ -type f -exec ln -s {} \;

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 21:26 27-05-2011
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » Создание ссылок сразу на несколько файлов


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru