【发布时间】:2015-12-03 00:12:18
【问题描述】:
是否有某种方法可以使用 bash 脚本复制包括内容在内的目录。例如
// Suppose there are many directory inside Test in c as,
/media/test/
-- en_US
-- file1
-- file 2
-- de_DE
-- file 1
-- SUB-dir1
-- sub file 1
-- file 2
.....
.....
-- Test 1
-- testfile1
-- folder
--- more 1
............
NoW i want to copy all the directories (including sub-directory and files)
to another location which matches the pattern.
--> for example , in above case I want the directories en_US and de_DE to be copied in another
location including sub-directories and files.
到目前为止,我已经完成/找出:
1) 所需模式为 /b/w{2}_/w{2}/b
2) 我可以将所有目录列为 ,
$MYDIR="/media/test/"
DIRS=`ls -l $MYDIR | egrep '^d' | awk '{print $10}'`
for DIR in $DIRS
do
echo ${DIR}
done
现在我需要帮助将它们组合在一起,以便脚本可以将与模式匹配的所有目录(包括子内容)复制到另一个位置。
提前致谢。
【问题讨论】:
-
我只是不明白您打算如何将这两件事放在一起以给出合理的结果。但是,根据我对您要实现的目标的相当有限的解释,请查看命令
ls -aR1 ./directory_name,它将为您提供目录中内容的完整列表 -
bash 是一个 UNIX shell。 UNIX 没有
folders,它有directories,UNIX 路径不是用反斜杠\分隔的,而是用正斜杠/分隔的。听起来您想要的 UNIX 命令只是cp -r olddir newdir。 -
@EdMorton:我确实改变了结构。好吧,如果该目录是已知的,那么将所有必需的目录复制到一个新位置可能会更容易。但情况是,可能有 1000 个具有 ex 结构的文件夹。
aa_bb即 2 个字符,然后是下划线,然后是两个字符。我需要找到所有具有这种格式的目录并将其复制到新位置。 -
有趣的是,您在问题中将文件夹更改为目录,然后继续描述 1000 个 文件夹 .... :-)。如果简单的
cp -r命令不是您需要的,请编辑您的问题以显示一些更具体的输入和输出示例。鉴于没有人提出任何其他建议,显然,鉴于您到目前为止告诉我们的内容,我们认为您需要的只是这些,所以如果这不是您需要的,您需要编辑您的问题以阐明您的要求。