Tôi cần có khả năng sắp xếp theo thứ tự abc đầu ra find
trướ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 find
trướ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 sort
có -z
tù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 -r
tùy chọn để xargs
đảm bảo rằng nó myCommand
được gọi với một đối số.
-t \0
tùy chọn để sắp xếp (đó là một -z
từ đồng nghĩa)
|sort
giải pháp này là bạn không thể sử dụng được -exec
nữa. OK, mặc dù có thể viết lại tuyên bố của bạn để -exec
nó 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 -n
cờ để 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 -z
cờ
print0
dườ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ớisort
việc kết thúc ở cuối danh sách ... vớipython
thứ hạng được xếp lên đầu. (có thể là trăn sắp xếp vớiLC_COLLATE=C
)