Trong thư mục ~/temp/a/foo/
và ~/temp/b/foo foo/
Tôi có một số tập tin có tên bar1
, bar2
, bar bar1
, bar bar2
vvdấu ngoặc kép vs mở rộng dấu hoa thị tên tập tin trong Bash
Tôi cố gắng để viết một dòng Bash rằng bản sao tất cả những tập tin này trong một thư mục có chứa "foo" như là phần cuối của tên vào thư mục phía trên thư mục "foo" tương ứng.
Chừng nào không có dấu cách trong tên tập tin, đây là một nhiệm vụ dễ dàng, nhưng hai lệnh sau thất bại khi giao dịch với các foo foo
thư mục:
for dir in `find . -type d -name '*foo'` ; do cp $dir/* "$(echo $dir|sed 's_foo__g')" ; done
(Lệnh cp
thất bại để xem cuối cùng foo
của "foo foo"
như một phần của tên thư mục tương tự.)
for dir in `find . -type d -name '*foo'` ; do cp "$dir/*" "$(echo $dir|sed 's_foo__g')" ; done
("$dir/*"
không được mở rộng.)
Nỗ lực như thay thế $dir/*
bằng "$(echo $dir/*)"
thậm chí còn kém thành công hơn.
Có cách nào dễ dàng để mở rộng $dir/*
để cp
hiểu không?
Vui lòng xem http://mywiki.wooledge.org/DontReadLinesWithFor –