命令
ls -l | egrep '^d'
列出CWD中的所有目录
而这个命令
cp a.txt /folder
将文件a.txt
复制到名为“folder”的文件夹
现在我应该怎么做结合2命令,以便文件a.txt
被复制到CWD中的所有文件夹。
cp
命令不需要几个目的地,但你总是可以尝试:
for DEST in `command here` ; do cp a.txt "$DEST" ; done
反引号内的命令可能是一个命令,在标准输出上产生一个目录列表,但我怀疑ls -l | egrep '^d'
ls -l | egrep '^d'
就是这样一个命令。 无论如何,你的问题的标题是关于结合LS和CP命令,这是我的答案。 要真正实现你想做的事情,你最好使用find
。
像find . -maxdepth 1 -type d ! -name "." -exec cp a.txt {} \;
东西find . -maxdepth 1 -type d ! -name "." -exec cp a.txt {} \;
find . -maxdepth 1 -type d ! -name "." -exec cp a.txt {} \;
可能会做你真正想要的。 find
命令是一个特殊情况,它有一个-exec
选项可以轻松地将自己与其他命令结合在一起。 你也可以使用(但是当有许多目录时,这个其他的版本失败):
for DEST in `find . -maxdepth 1 -type d ! -name "."` ; do cp a.txt "$DEST" ; done
不要在脚本中使用ls
。 改用通配符。
您必须循环访问目标目录,因为cp
复制到一个目标。
for d in */; do if ! [ -h "${d%/}" ]; then cp a.txt "$d" fi done
模式*/
匹配当前目录中的所有目录(除非它们的名字以.
开头),以及到目录的符号链接。 对${d%/}
( $d
没有final)的测试排除了符号链接。