命令
ls -l | egrep '^d'
列出CWD中的所有目录。
这个命令
cp a.txt /folder
将文件a.txt
复制到名为“folder”的文件夹
现在我该如何组合2命令,以便将文件a.txt
复制到CWD中的所有文件夹。
答案 0 :(得分:4)
cp
命令不会占用多个目的地,但您可以随时尝试:
for DEST in `command here` ; do cp a.txt "$DEST" ; done
反引号内的命令可能是一个在标准输出上产生目录列表的命令,但我怀疑ls -l | egrep '^d'
是这样一个命令。无论如何,你的问题的标题是关于组合ls和cp命令,这是我的答案。要真正实现您想要做的事情,最好使用find
。
像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
答案 1 :(得分:3)
Don't use ls
in scripts。请改用通配符。
您必须遍历目标目录,因为cp
一次复制到一个目的地。
for d in */; do
if ! [ -h "${d%/}" ]; then
cp a.txt "$d"
fi
done
模式*/
匹配当前目录中的所有目录(除非它们的名称以.
开头),以及指向目录的符号链接。对${d%/}
($d
没有最终/
)的测试不包括符号链接。