Tôi cần có khả năng sắp xếp theo thứ tự abc đầu ra findtrước khi đưa nó vào một lệnh. Bước vào | sort |giữa không hoạt động, vậy tôi có thể làm gì?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Tôi cần có khả năng sắp xếp theo thứ tự abc đầu ra findtrước khi đưa nó vào một lệnh. Bước vào | sort |giữa không hoạt động, vậy tôi có thể làm gì?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Câu trả lời:
Một số phiên bản sortcó -ztùy chọn, cho phép các bản ghi kết thúc null.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Ngoài ra, bạn cũng có thể viết một tập lệnh cấp cao để thực hiện:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Thêm -rtùy chọn để xargsđảm bảo rằng nó myCommandđược gọi với một đối số.
-t \0tùy chọn để sắp xếp (đó là một -ztừ đồng nghĩa)
|sortgiải pháp này là bạn không thể sử dụng được -execnữa. OK, mặc dù có thể viết lại tuyên bố của bạn để -execnó hoạt động xargs, nhưng câu hỏi là, "mini-scripts" thì sao? ( sh -c ...) Tôi sẽ không gọi nó tầm thường để chuyển đổi một tập lệnh nhỏ 'sh -c' với nhiều lệnh để nó có thể hoạt động với xargs(nếu có thể, đó là)
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Tôi nghĩ bạn cần -ncờ để sắp xếp #
Theo loại đàn ông:
-n, --numeric-sort
compare according to string numerical value
biên tập
Print0 có thể có một cái gì đó để làm với điều này, tôi chỉ thử nghiệm điều này. Lấy print0 ra, bạn có thể hủy kết thúc chuỗi theo cách sử dụng -zcờ
print0dường như là phân tách không gian tên tập tin, đó là điều tôi cần phải truyền cho lệnh của mình, thật không may
Nếu bạn đã cài đặt GNU Parallel http://www.gnu.org/software/pool/, bạn có thể làm điều này:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Bạn có thể cài đặt GNU Parallel đơn giản bằng cách:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Xem các video giới thiệu về GNU Parallel để tìm hiểu thêm: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.khác nhau ... Vớisortviệc kết thúc ở cuối danh sách ... vớipythonthứ hạng được xếp lên đầu. (có thể là trăn sắp xếp vớiLC_COLLATE=C)