我想将目录中的某些文件移动到另一个驱动器,并在旧目录中为每个文件创建指向新目录的符号链接。
例如,
[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
我有太多文件需要移动,因此手动操作会花费很多时间。最简单的方法是什么?
答案1
for i in *; do mv $i /mnt/backup; ln -s /mnt/backup/$i $i; done
答案2
我认为你需要定义全局:
对于 `ls *` 中的 i;执行 mv $i /mnt/backup;ln -s /mnt/backup/$i $i;完成
或者如果很多文件, ls 可能会阻塞,在这种情况下:
查找./* -type f -exec mv {} /mnt/backup/ \; -exec ln -s /mnt/backup/{} {} \;