Command-Line
如何使用for循環複製?
我
for d in ./*/ ; do (cd "$d" && cp -R ../lib . ); done
在 shell 腳本中使用它來複製父目錄內所有子文件夾中的 lib 文件夾。但是 lib 文件夾也被複製到 lib 中。如何避免這種情況?
沒有
extglob
:for d in */ ; do if [ "$d" != "lib/" ]; then cp -R lib "$d" fi done
或者只是事後刪除它……(好吧,除非
lib/lib
事先存在!)for d in */; do cp -R lib "$d"; done rm -r lib/lib
(有點有趣的是,GNU cp 說
cp: cannot copy a directory, 'lib', into itself, 'lib/lib'
,但還是這樣做了。)
單程:
shopt -s extglob for d in ./!(lib)/; do #...
或者可能將其移出,使其不匹配:
mv lib ../ #better not have a conflicting ../lib directory there for d in */; do cp -R ../lib "$d"; done