Переместите весь вывод 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

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

0
задан 4 August 2015 в 01:00
2 ответа
for i in *; do mv $i /mnt/backup; ln -s /mnt/backup/$i $i; done
0
ответ дан 24 November 2019 в 08:19

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

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

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

find ./* -type f -exec mv {} / mnt / backup / \; -exec ln -s / mnt / backup / {} {} \;

0
ответ дан 24 November 2019 в 08:19

Теги

Похожие вопросы