Ai đó có thể giải thích tại sao điều này xảy ra?
Cụ thể nhất: Tại sao nội dung của 1 được sao chép vào f? Và tại sao f được sao chép vào g?
$ tree
.
0 directories, 0 files
$ mkdir 1
$ mkdir 2
$ touch 1/a
$ touch 1/b
$ mkdir 1/c
$ touch 1/c/x
$ tree
.
├── 1
│ ├── a
│ ├── b
│ └── c
│ └── x
└── 2
3 directories, 3 files
$ cp -r 1/* 2/*
zsh: no matches found: 2/*
$ cp -r 1/* 2/*
$ mkdir 2/f
$ mkdir 2/g
$ cp -r 1/* 2/*
$ tree
.
├── 1
│ ├── a
│ ├── b
│ └── c
│ └── x
└── 2
├── f
└── g
├── a
├── b
├── c
│ └── x
└── f
7 directories, 6 files
Nếu đích đến của
—
Aaron D. Marasco
cp
loại này không rõ ràng, bạn có thể thử --target-directory
, ví dụ: cp --target-directory=2 fileglob1 fileglob2
tôi thấy tùy chọn đó rất hữu ích trong các tập lệnh mà tôi không chắc chắn những gì ảm đạm sẽ hoạt động và những gì sẽ không; nó giúp ngăn ngừa vô tình ghi đè lên công cụ. (Một số phiên bản cp
cho phép -t
.)
cp -r 1/* 2/*
trong đó - nó được thực hiện hai lần liên tiếp với các kết quả khác nhau (rõ ràng). Nó luôn luôn phải phàn nàn về việc không tìm thấy2/*
vì vỏ không thể mở rộng toàn cầu - không có gì phù hợp với nó. Và nội dung của1
không được sao chépf
vào ví dụ này.