![](/img/trans.png)
[英]'find' all .log files under a directory, copy them to another directory named after their parent directory?
[英]BASH: Copy all files and directories into another directory in the same parent directory
我试图做一个简单的脚本复制了所有我的$HOME
到另一个文件夹$HOME
称为Backup/
。 这包括所有隐藏的文件和文件夹,并且不包括Backup/
本身。 我现在要复制的部分如下:
shopt -s dotglob
for file in $HOME/*
do
cp -r $file $HOME/Backup/
done
Bash告诉我它无法将Backup/
复制到其自身中。 但是,当我检查$HOME/Backup/
的内容时,我看到$HOME/Backup/Backup/
存在。
Backup/
本身的副本是没有用的。 我如何获得bash来复制除Backup/
以外的所有文件夹。 我尝试使用extglob
并使用cp -r $HOME/!(Backup)/
但是它没有复制我需要的隐藏文件。
尝试rsync。 您可以排除文件/目录。
这是一个很好的参考
http://www.maclife.com/article/columns/terminal_101_using_rsync_locally
雨果
这样的脚本是好的,但是您可以尝试执行以下操作:
cp -r *备份/; cp -r。*备份/;
备份使用的另一个工具是tar。 这样可以压缩备份以节省磁盘空间。
另请注意,*并不覆盖。 隐藏文件。
我同意使用rsync
是更好的解决方案,但是有一种简单的方法可以跳过bash
的目录:
for file in "$HOME/"*
do
[[ $file = $HOME/Backup ]] && continue
cp -r "$file" "$HOME/Backup/"
done
这不会直接回答您的问题(其他答案已经做到了),但是当您想使用cp进行备份时,请尝试cp -ua
。 这将递归目录,复制而不是跟随链接,保留权限,并且仅在文件比目标副本新时复制文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.