我磕了对家cp:为什么我在cp命令中使用globbing得到“省略目录”错误

我试图将“file.txt”文件复制到所有目录中。

[root@mycomputer]# ls -lh
total 132K
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:47 ilo01
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo02
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo03
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo04
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo05
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo06
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo07
drwxr--r--.  2 postgres postgres 4.0K Jan  2 08:40 ilo08
drwxr--r--.  2 postgres postgres 4.0K Jan  2 10:03 ilo09
drwxr--r--. 11 postgres postgres 4.0K Jan  2 11:15 ilo10
-rw-r--r--.  1 postgres postgres  64K Jun 27  2016 file.txt

使用 TAB 查看要运行的命令的行为:

[root@mycomputer]# cp -p file.txt ilo[0-1][0-9]
ilo01/ ilo02/ ilo03/ ilo04/ ilo05/ ilo06/ ilo07/ ilo08/ ilo09/ ilo10/

但我得到了这个错误:

[root@mycomputer]# cp -v -p file.txt ilo[0-1][0-9]*
`postgresTdas.txt' -> `ilo10/file.txt'
cp: omitting directory `ilo01'
cp: omitting directory `ilo02'
cp: omitting directory `ilo03'
cp: omitting directory `ilo04'
cp: omitting directory `ilo05'
cp: omitting directory `ilo06'
cp: omitting directory `ilo07'
cp: omitting directory `ilo08'
cp: omitting directory `ilo09'

同样的事情发生在:

[root@mycomputer]# cp -p file.txt ilo*

[root@mycomputer]# cp -p file.txt ilo*/

我不明白为什么“[0-1] [0-9] 没有按照我需要的方式工作。

我假设副本将把 file.txt 放在选项卡显示的列表中。

我错过了什么?

3

参数扩展到文件 + 所有目录

cp将最后一个参数视为目标,因此其他目录被视为源。

因为cp不会复制目录,除非设置了-r-R选项(复制目录内容),所以除了最后一个目录之外,您会收到所有目录的警告。

我会用 bash / sh 脚本来代替:

for d in ilo[0-1][0-9]
do
   cp -p file.txt $d
done
2

cp命令的大多数实现都是not能够复制到多个目标。对此无能为力。您需要多次调用cp来解决该限制。最简单的可能是这样的:

ls -d dir* | xargs -n 1 cp file.txt

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(843)
有没有清理c盘的软件:詹金斯:有没有办法清理詹金斯工作区
上一篇
Vc6编译器:需要适用于VC6的平台SDK(moodle studio xp)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(29条)