2011-02-19 1 views
0

아래 요구 사항에 대해 한 줄 명령이 필요합니다.한 줄짜리 줄을 사용하여 파일 이름이 25 자보다 짧은 파일 목록을 재귀 적으로 인쇄하려면 어떻게해야합니까?

find/-type f |xargs basename .... I : 루트 디렉토리 및 인쇄 파일 이름이 길이 만 파일 이름에서

검색 모든 파일은 우리가 같은 아래 find 명령의 뭔가를 할 수 있다고 생각 적은 25

보다 furthur 명령에 대해 확실하지 않습니다.

+1

질문 제목을 더 구체적으로 수정하십시오. –

+1

"한 줄 명령"은 이상한 요구 사항입니다. – Johnsyweb

+0

아니, 나는 당신이 * 할 * 명령을 원하는 것에 관한 특정 의미. 질문 제목은 질문의 주제를 반영해야하며 일반적이지 않아야합니다. 나는 너를 위해 그것을 편집 할 것이다. –

답변

0

신속하게 몇 가지 매뉴얼을 참조하면 좀 더 적합하고 understand.please하기 쉽게 AWK를 찾아야 내가 생각해 냈던 아래의 해결책을 보라.

일부 구문 오류가있을 수 있습니다. 제가 틀렸다면 나를 수정하십시오.

+0

전체 경로와 파일 이름의 길이를 살펴 보았지만 좋은 시작처럼 보입니다. –

+0

thats right.edited 대답을 지금 – Vijay

2
find/-type f|egrep "/[^/]{0,24}$" 

또는 당신은 단지 경로없이 파일 이름을 표시하려면 :

find/-type f| egrep -o "/[^/]{0,24}$" | cut -c 2- 
+0

이렇게하면 루트 디렉토리에있는 모든 파일 *을 찾을 수 있습니다. 루트 디렉토리의 "from"은 재귀 적으로 의미가 있다고 생각합니다. 루트 디렉토리 만 원한다면 -maxdepth 1을 사용하면 빠릅니다. – Erik

+0

@Erik 파일을 재귀 적으로 찾으며 파일 이름 만 일치시킵니다. '^/[^ /] {0,24} $'는 루트 디렉토리의 _in_ 파일 만 찾습니다. 그러나 내가 틀렸다면 나에게 정정해라. 또한 maxdepth 팁에 감사한다. 나는 그것을 알지 못했다. – veiset

+0

죄송합니다, 당신 말이 맞아요, 내 마음이 거기에 배치되었습니다. +1이 잘못되었습니다. – Erik

2

내 GNU의 발견은 표준 발견의 일부 확실하지 여부를이를 지원합니다.

find/-type f -regextype posix-extended -regex '.*/.{1,24}$' 

또는 찾기 | grep. 배쉬에게 4+

shopt -s globstar 
shopt -s nullglob 
for file in **/* 
do 
    file=${file##*/} 
    if ((${#file} < 25));then echo "$file"; fi 
done 

루비를 사용

find/-type f | egrep '.*/.{1,24}$' 
+0

My 유닉스는 egrep을 지원하지 않습니다. – Vijay

1

(1.9+)

ruby -e 'Dir["**/*"].each {|x| puts x if File.basename(x).size < 25}'