|
|
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 完成 |
|
hbhutta · 尝试在目录中创建文件时获取权限错误 3 年前 |
|
|
7BeholdeR7 · 文件夹的重量超过其中的文件(六倍) 4 年前 |
|
|
HoCo_ · 从终端在Atom中添加项目文件夹 8 年前 |
|
|
Pymateur · 如何在Windows上将目录路径作为用户输入? 8 年前 |
|
|
Jasonca1 · PathLib递归删除目录? 8 年前 |
|
|
Bassie · 对话框以错误路径打开文件夹 8 年前 |
|
|
RickRilled · 如何在bash中的目录中操作 8 年前 |