2012-12-03 22 views

Trả lời

42

sử dụng sed?

ls -1 | sed -e 's/\..*$//' 
+7

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

+2

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 ... –

+4

@rici:' sed -e 's /\.[^.]*$//' ' – anishsane

12
ls | while read fname 
do 
    echo ${fname%%.*} 
done 

Hãy thử điều đó.

+8

[không phân tích ls] (http://mywiki.wooledge.org/ParsingLs) - 'cho fname trong *; do ... ' –

+0

@Glenn - Đó là một cách tiếp cận chính xác, vâng. Khái niệm UUOC. Tôi nghĩ OP ngụ ý sử dụng ls. Vì vậy, dường như đã làm Dyno Hungjun Fu. –

4
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)

+1

tên tập tin có thể có nhiều hơn 1 chấm, đặc biệt là gói rpm – riverfall

+0

Bất cứ ai có thể cho tôi biết lý do tại sao ls | cut -d "." -f -2> test.txt không hoạt động? – holistic

+0

không có ý tưởng giao phối. Tôi không có ý tưởng những gì bạn mong đợi để xem. Tôi cho rằng bạn biết rằng bạn phải đọc tập tin bằng 'cat', đúng không? – runlevel0

Các vấn đề liên quan