2013-09-21 4 views
1

일부 스크립트에 대한 도움을 요청드립니다. 도움을목록 파일은 특정 주문입니다.

3_of_meany_key1_files.ext 
6_key2_of_meany_files.ext 
1_of_meany_files.ext 
2_of_meany_files.ext 
5_of_meany_files.ext 

나는 것 감사 :

1_of_meany_files.ext 
2_of_meany_files.ext 
3_of_meany_key1_files.ext 
5_of_meany_files.ext 
6_key2_of_meany_files.ext 

지금 내가 이러한 파일의 목록을하지만 특정 순서로 file.txt를 구축하려고 해요 : 나는 하나의 확장자를 가진 하나의 디렉토리에있는 파일을 . 감사 마르신

== 편집 ==

안녕, 당신의 도움을 주셔서 감사합니다. 스크립트가 정상적으로 작동하고 있습니다. 그러나 나는 한 가지 문제가있다. 핵심 단어가 그 안에있는 숫자를 가지고 있다면 완벽하게 작동한다. 그러나 핵심 단어는 숫자없이 가능합니다 (S114 또는 S_114) 이러한 스크립트는 작동하지 않습니다. 이것으로 무엇을 할 수 있습니까? 일반 파일을 정렬하고 키 (S114 또는 S_114)를 사용하여 목록의 맨 위에 놓고 싶습니다. 디렉토리에서 두

one_file_S_114_text.ext 
    rest_of_files_1.ext 
    rest_of_files_2.ext 
    rest_of_files_3.ext 

키를 가진 하나 개의 파일이 될 수 있습니다

옵션 1 개

one_file_S114_text.ext 
    rest_of_files_1.ext 
    rest_of_files_2.ext 
    rest_of_files_3.ext 

옵션,하지만 키 S114가 될 수 있습니다 그래서 캔을 분류 한 후 파일은 다음과 같습니다 또는 S_114

감사합니다. 마르cin

+2

. 어떤 기준에 따라 분류하고 싶습니까? – user000001

+0

나는 목록 파일의 상단에 key1, 두 번째 파일에는 key2가 없다. 나머지 파일들에 대해서는 특별한 명령을 필요로하지 않습니다. (ls 명령으로 직접 할 수 있습니다.) – user2801931

답변

2

끝 부분에 키가없는 파일을 원하므로 awk 명령에서 print $2+0,$0을 수행 할 수 없으므로 약간 까다 롭습니다. 그러나,이 AWK-종류의 컷 파이프 라인은 당신이 원하는 일을해야 펄

$ printf "%s\n" * | awk -F'_key' '{print $2+0==0?1000000:$2+0,$0}'| sort -n | cut -d' ' -f 2- 
3_of_meany_key1_files.ext 
6_key2_of_meany_files.ext 
1_of_meany_files.ext 
2_of_meany_files.ext 
5_of_meany_files.ext 
+0

도움을 주셔서 감사합니다 나는 내 첫 번째 글을 편집했습니다. – user2801931

2

: 내가 원하는 순서를 이해하지 못하는

perl -e 'print"$_\n"for sort{($a=~/key(\d+)/?$1:1e+9)-($b=~/key(\d+)/?$1:1e+9)}<*>'