mrj*_*per 6 cp recursive file-copy
我相信这个问题最好用一个例子来问。
/home
test1.txt
test2.txt
/home/my-folder
test3.txt
test4.txt
Run Code Online (Sandbox Code Playgroud)
test1.txt
,test2.txt
和my-folder
文件夹在里面/home
。test3.txt
并且text4.txt
在里面/home/my-folder
。我想复制/home
文件夹的所有内容,但排除里面的 2 个文件(test3.txt
和test4.txt
)my-folder
。
我该如何使用cp
?
我知道这是可能的,rsync
因为我刚刚尝试过,但有时rsync
未安装在服务器中并且我无权安装软件。
你可以用find(1)
and做到cpio(1)
:
find /home -path './my-folder/test[34].txt' -prune -o \( -type f -print \) | \
cpio -pdamv /some/other/dir
Run Code Online (Sandbox Code Playgroud)
您无法cp
单独完成此操作,除非列出要复制的文件。制作部分副本超出了cp
的能力范围。
Rsync 是完成这项工作的明显工具,而且应用非常广泛。
如果您只有 POSIX 工具,则可以使用pax。您可以通过将文件路径重写为空字符串来省略文件。
cd /home && pax -rw -pe -s'~^\./my-folder/test[34]\.txt$~~' . /path/to/destination
Run Code Online (Sandbox Code Playgroud)
如果您只有一个缺少 的最小 Linux 服务器pax
,请查看其传统的等效项cpio
或tar
是否可用。有关示例,请参阅lcd047 的答案cpio
。使用GNU tar
,你可以做到
mkdir /path/to/destination
tar -cf - -C /home --exclude='./my-folder/test[34].txt' . |
tar -xf - -C /path/to/destination
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24735 次 |
最近记录: |