微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 将文件移回2目录

$cat file
/tmp/foldera/folderb/folderc/file1
/tmp/folderc/folderd/foldere/file2
/tmp/folderf/folderg/folderh/file3

需要将此文件移动到

/tmp/foldera/
/tmp/folderc/
/tmp/folderf/

分别使用循环或任何简单方便的方法来做到这一点.

解决方法:

使用while循环:

while IFS= read -r l; do
  mv -v -- "$l" "${l%/*/*/*}/"
done <file

> IFS = read -r l将逐行读取文件.
> mv -v移动文件,-v告诉mv是详细的

>“$l”是源文件
>“${l%/ * / * / *} /”是目标目录.它从文件名的后端删除了3个斜杠以及它们之间的内容(/ * / * / *).

这将产生:

»/tmp/foldera/folderb/folderc/file1“ -> »/tmp/foldera/file1“
»/tmp/folderc/folderd/foldere/file2“ -> »/tmp/folderc/file2“
»/tmp/folderf/folderg/folderh/file3“ -> »/tmp/folderf/file3“

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐