考虑类似于(但不限于)
的文件列表(例如files.txt
)
/root/
/root/lib/
/root/lib/dir1/
/root/lib/dir1/file1
/root/lib/dir1/file2
/root/lib/dir2/
...
如何使用 a) 完整的文件夹结构但是 b) 从路径中剥离了 N 个文件夹组件(在示例中只是 /root/
)?
我已经设法使用了
cp --parents `cat files.txt` ~/destination
复制具有完整文件夹结构的文件,但是这会导致所有文件以 ~/destination/root/...
结尾,而我想将它们放在 中~/目的地/...
最佳答案
我想我通过使用 GNU tar
找到了一个非常好的简洁的解决方案:
tar cf - -T files.txt | tar xf - -C ~/destination --strip-components=1
注意 --strip-components
选项允许从文件名的开头删除任意数量的路径组件。
但有一个小问题:tar
似乎总是“压缩”files.txt
中提到的文件夹的全部内容(至少我找不到一个选项来忽略文件夹),但这最容易使用 grep
解决:
cat files.txt | grep -v '/$' > files2.txt
关于bash - Shell:复制具有完整文件夹结构的文件列表,从文件名中剥离 N 个前导组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619894/