[英]Linux : combining the “ls” and “cp” command
命令
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
不帶最后的/
)上的測試不包括符號鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.