簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM