需要帮助改进脚本

需要帮助改进脚本

我有一组文件夹(L1N-L5N),我想将其从我的 /home/michael/documents/XXX 复制到我的 Dropbox 文件夹。目前,我使用了以下脚本:

#!/bin/sh
cp -ra /home/michael/Documents/GeneralNetwork /GNI /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L1N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L2N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L3N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L4N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L5N /home/michael/Dropbox/NetworkData

这虽然可行,但效果不佳。

我也不确定为什么它会返回这个:

cp: cannot stat ‘/GNI’: No such file or directory
cp: cannot stat ‘/L1N’: No such file or directory
cp: cannot stat ‘/L2N’: No such file or directory
cp: cannot stat ‘/L3N’: No such file or directory
cp: cannot stat ‘/L4N’: No such file or directory
cp: cannot stat ‘/L5N’: No such file or directory

我想过把它缩短为:

cp -ra /home/michael/Documents/GeneralNetwork/L*

或者使用其他通配符来拾取所有包含“L”的文件夹。我想要将文件复制到此目录中的文件夹(并覆盖),但我不能确定它们是否符合上述文件夹名称方案。

创建 .sh 文件以复制 .../GeneralNetwork/* 中的所有内容而不复制隐藏文件等的最佳方法是什么?我已经完成了 ../GeneralNetwork/。它包括 boot、bin、sys 等。

答案1

cp:无法统计‘/GNI’:没有这样的文件或目录

这是因为空格:

cp读起来像这样:

cp -ra /home/michael/Documents/GeneralNetwork /GNI

需要将文件夹:/home/michael/Documents/GeneralNetwork复制到/GNI。但是 中没有文件夹/GNI,因此出现错误。


如果文件之间有空格,请将其放在引号之间:

"/home/michael/Documents/GeneralNetwork /GNI"

cp看到:

/home/michael/Documents/GeneralNetwork

使用引号,它将读取空格以外的内容:

cp -ra "/home/michael/Documents/GeneralNetwork /GNI" /home/michael/Dropbox/NetworkData

根据用户请求

如果我理解正确的话,你想复制/home/michael/Documents/GeneralNetwork

以及其中的所有内容。是的,这是可能的,如下所示:

cp -ra "/home/michael/Documents/GeneralNetwork /*.*" /home/michael/Dropbox/NetworkData

相关内容