Linux:结合“ls”和“cp”命令

命令

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)的测试排除了符号链接。