Назад | Перейти на главную страницу

Переместить весь вывод ls и символическую ссылку

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

Например,

[root@localhost olddir]# ls *.MYD
-rw-rw---- 1 mysql mysql 51940340 Mar 31  2014 zx2014033121.MYD
-rw-rw---- 1 mysql mysql 38341784 Apr  1  2014 zx2014033122.MYD
-rw-rw---- 1 mysql mysql 21838676 Apr  1  2014 zx2014033123.MYD

Теперь я хочу переместить их все в / mnt / backup и создать символическую ссылку для каждого из них, например:

[root@localhost olddir]# ls *.MYD
-rw-rw---- 1 mysql mysql 51940340 Mar 31  2014 zx2014033121.MYD -> /mnt/backup/zx2014033121.MYD
-rw-rw---- 1 mysql mysql 38341784 Apr  1  2014 zx2014033122.MYD -> /mnt/backup/zx2014033122.MYD
-rw-rw---- 1 mysql mysql 21838676 Apr  1  2014 zx2014033123.MYD -> /mnt/backup/zx2014033123.MYD

Мне нужно переместить слишком много файлов, поэтому выполнение этого вручную займет много времени. Как это сделать проще всего?

Я думаю, вам нужно определить глобус:

для i в `ls *`; сделать mv $ i / mnt / backup; ln -s / mnt / backup / $ i $ i; сделано

Или если это много файлов, ls может подавиться, и в этом случае это:

найти ./* -type f -exec mv {} / mnt / backup / \; -exec ln -s / mnt / backup / {} {} \;

for i in *; do mv $i /mnt/backup; ln -s /mnt/backup/$i $i; done