Очень простой, это - просто символьная ссылка:
ln -s /foo/live/images /foo/dev/images
Просто смотрите полномочия каталога и т.д. Просмотреть страницу справочника (все доступные варианты) для ln
управляйте, введите следующее при подсказке:
man ln
В дополнение к eboix's find
команда (который, поскольку это стоит повреждения на пробеле, я помещу более безопасный путь или два в конце), можно использовать bash
extglob
функция:
# turn extglob on
shopt -s extglob
# move everything but the files matching the pattern
mv dir1/!(*.c) -t dir2
# If you want to exclude more patterns, add a pipe between them:
mv dir1/!(*.c|*.txt) -t dir2
Посмотрите bash
страница справочника для больше Вас может сделать с extglob. Обратите внимание, что это не рекурсивно и так только переместит файлы в dir1
непосредственно, не подкаталоги. find
метод является рекурсивным.
Более безопасный find
команды:
find dir1 ! -name '*.c' -print0 | xargs -0 mv -t dir2
find dir1 ! -name '*.c' -exec mv -t dir2 {} +
Для большего количества шаблонов просто добавьте больше ! -name
операторы:
find dir1 ! -name '*.c' ! -name '*.txt' -print0 | xargs -0 mv -t dir2
find dir1 ! -name '*.c' ! -name '*.txt' -exec mv -t dir2 {} +
-print0
/ -0
или используйте -exec
.
– Kevin
09.01.2012, 04:53
! -name ...
операторы, я обновил свой ответ для показа этого.
– Kevin
09.01.2012, 16:36
Вы можете использовать следующую команду из dir1:
cp ls|egrep -v . txt\|.c
dir2
В части "ls|egrep -v .txt\|.c" будут перечислены файлы без .c и .txt в имени. cp скопирует их в dir2