Kev là tốt hơn, nhưng điều này cũng sẽ làm việc:
find "/home/folder" -maxdepth 1 | sed -e "/^\/home\/folder$/d" -e "/^\/home\/folder\/subfolder5$/d" -e "/^\/home\/folder\/subfolder7$/d" -e "s/^/cp \-r /" -e "s/$/ \/home\/target/" | cat
Giải thích:
find "/home/folder" -maxdepth 1 |
// get all files and dirs under /home/folder, pipe output
sed -e "/^\/home\/folder$/d"
// have sed strip the path being searched, or the cp -r we prepend later will pickup the excluded dirs again.
-e "/^\/home\/folder\/subfolder5$/d"
// have sed strip subfolder5
-e "/^\/home\/folder\/subfolder7$/d"
// have sed strip subfolder7
-e "s/^/cp \-r /"
// have sed prepend "cp -r " to each line
-e "s/$/ \/home\/target/" | cat
// have sed append targetdir to each line.
Đầu ra:
cp -r /home/folder/subfolder9 /home/target
cp -r /home/folder/subfolder1 /home/target
cp -r /home/folder/file10 /home/target
cp -r /home/folder/subfolder2 /home/target
cp -r /home/folder/file1 /home/target
cp -r /home/folder/subfolder3 /home/target
Thay đổi | cat
thành | sh
để thực thi lệnh.
< Một từ chối trách nhiệm lớn goes here >
Bạn nên giải pháp Kev là tốt hơn
bản sao đầu tiên thư mục hoàn chỉnh một cách đệ quy, sau đó sử dụng lệnh rm để loại bỏ các thư mục con 5 & 7 – Pradeep
thể trùng lặp của [thư mục Sao chép một cách đệ quy, trừ một số thư mục] (http: // stackoverflow. com/questions/2193584/copy-folder-đệ quy-loại trừ-một số-thư mục) –