我正在尝试将特定文件夹文件(无目录和子目录文件)复制(备份)到第二个文件夹。我使用 backstick 嵌套 find 命令,但它为每个带有 file_name (copy).extension 的文件都给出了错误
cp -a -t /home/gianmarco/backup2 `find /home/gianmarco/backup1 -maxdepth 1 -type f`
cp: cannot stat '/home/gianmarco/backup1/helloWorld': No such file or directory
cp: cannot stat '(copy).txt': No such file or directory
cp: cannot stat '/home/gianmarco/backup1/2nuovoFile': No such file or directory
cp: cannot stat '(copy).txt': No such file or directory
有什么建议吗?谢谢!
答案1
用于在这些文件上find
运行:cp
find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +
这样,文件名中的空格和其他特殊字符就不会成为问题。当您使用命令替换而不使用引号时,shell 会根据空格拆分输出,然后执行通配符扩展等。使用其find
自身执行此操作更简单。或者参见如何在 rsync 中排除所有子目录但包含目录的文件?
答案2
尝试使用同步。在此示例中,我调用 syncronize 所有文件和文件夹源码目录至夏令时,排除.sh
文件,保留权限、所有权、时间戳:
rsync -a --exclude '*.sh' /path/to/src /path/to/dst
此外,您可以添加一些附加参数,这取决于您的情况。
答案3
尝试以下命令:
find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;
该-depth
选项find
以深度优先的顺序遍历文件系统。
答案4
find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2