ls -a | cut -d "." -f 1
người đàn ông (1) cắt
Rất tiện dụng, công tắc -d xác định dấu phân cách và -f mà lĩnh vực mà bạn muốn.
EDIT: Bao gồm riverfall's trường hợp cũng là miếng bánh như cắt có thể bắt đầu cũng từ cuối, mặc dù logic là hơi khác nhau. Dưới đây là một ví dụ với một loạt các tập tin với tên ngẫu nhiên, một số có hai chấm, một số với một dấu chấm duy nhất và một số mà không cần mở rộng:
[email protected]:~/test$ ls
test.001.rpx test.003.rpx test.005.rpx test.007.rpx test.009.rpx testxxx
test.002.rpx test.004.rpx test.006.rpx test.008.rpx test_nonum test_xxx.rtv
[email protected]:~/test$ ls | cut -d "." -f -2
test.001
test.002
test.003
test.004
test.005
test.006
test.007
test.008
test.009
test_nonum
testxxx
test_xxx.rtv
Sử dụng trừ trước lĩnh vực số làm cho nó loại bỏ tất cả NHƯNG chỉ lĩnh vực (1,2 trong trường hợp này) và đặt nó phía sau làm cho nó bắt đầu đếm từ cuối.
cùng ký hiệu này có thể được sử dụng để bù đắp và các nhân vật bên cạnh các lĩnh vực (xem man page)
FWIW, tôi muốn sử dụng 'ls | sed 's/\ (. * \) \ .. */\ 1 /' 'để chỉ loại bỏ phần bắt đầu với dấu * * cuối cùng. (Ngoài ra, hãy chú ý đến '.' trong tên thư mục, ví dụ: ls ../src – rici
ls -1 và ls hoạt động giống hệt nhau khi stdout cho ls là một đường ống. Không quan trọng ... –
@rici:' sed -e 's /\.[^.]*$//' ' – anishsane