![]() |
1
5
这与(封闭的)问题非常相似:
Bash scripting copying files without overwriting
. 我给出的答案引用了
CTIME
当我在Solaris上测试时,无论是GNU TAR还是(Solaris)CPIO都无法保留CTIME设置;实际上,我不确定是否有任何方法可以做到这一点。例如,
切迪尔
我认为
不使用
带有空格、换行符等的名称
GNU特定'
注释
:这不会覆盖备份目录下预先存在的文件。添加
同样地,GNU
GNU处理带有空终止符的文件名是非常聪明和有价值的创新(尽管我最近才意识到这一点,这是出于好意;它已经在GNU tar中存在了至少十年)。 |
![]() |
2
3
您可以使用copy-pass模式尝试cpio,-p.i通常将其与overwrite all(-u)、create directories(-d)和maintain modification time(-m)一起使用。
请记住,find应该生成相对路径名,这不符合绝对路径条件。当然,这种感冒是用CD来解决的,你也不喜欢CD(为什么不?)
括号将生成一个子shell,并将状态更改(即目录开关)保持在本地。你也可以定义一个小程序来抽象“丑陋”。 |
![]() |
3
1
如果您使用的是find,则始终使用-print0并通过管道将输出传输到xargs-0;几乎总是如此。如果使用find的默认换行终止符输出,名为空格的第一个文件将借用脚本。 我同意所有其他海报-如果可以的话使用cpio或tar。它可以做你想做的,省去麻烦。 |
![]() |
4
0
另一种选择是使用焦油, (cd$source;tar cf-)(cd$destination;tar xf-) 编辑: 啊,我错过了保存CTIME的机会。我相信tar的大多数实现都会保留mtime,但是如果保留ctime是关键的,那么cpio确实是唯一的方法。 另外,一些tar实现(gnu tar是其中之一)可以根据atime和mtime选择要包含的文件,尽管看起来不是ctime。 |
![]() |
5
0
我想,既然您希望包含“它来自哪里”,那么您将使用不同的源目录。只需将src=/my/source/directory替换为src=$1,就可以将此脚本修改为将source dir作为参数。 编辑:删除多余的if语句。 文件名有空格时不起作用。 |
![]() |
6
0
!/UR/BIN/SH复制具有相同目录结构的文件的脚本“echo“请输入源目录的完整路径(从/开始,以/结束):” 读斯帕特 echo“请输入目标位置的完整路径(从/开始,到/结束):” 读取路径
SI =
因为在
cp$fname$dpath$cdir 完成 |
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
g00dds · 如何在bash中从文件中的每一行解码base64? 2 年前 |
![]() |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |
![]() |
RafaÅ G. · 如何使用从文件读取的多行参数运行ssh? 2 年前 |
![]() |
Priya · 在shell脚本中多次运行python脚本 2 年前 |