移动所有 ls 输出和符号链接

移动所有 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

我有太多文件需要移动,因此手动操作会花费很多时间。最简单的方法是什么?

答案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/{} {} \;

相关内容