ko en ko ko ko ja en en zh en pt ko ko ko ko ko en ko ko nl ko en nl ko en ko en ko ko en nl ko ko zh ko ko nl ko en ko ko ko nl ko en ko nl ko en ko nl el ko ko ko ko ko ko ko ko zh en en en en pt fr en en kn en sv fr en en en en en es fr en en en fr ja en en en en en en en en en fi en hu pt hbs_lat ru en en en en pl ko ko ko ko ko ko ko zh en en pt en en en uz en en fr eo sv en en en es en en en en en en ja en it hu ja eo en de en ko ko en en
특정 결말을 가진 파일이없는 디렉토리 찾기 디렉토리를 표시하고
특정 파일 끝을 가진 파일을 포함하지 않는 모든 디렉토리를 표시하고 싶습니다. 따라서 다음 코드를 사용해 보았습니다.
이 예제에서는 ending 파일을 포함하지 않는 모든 디렉토리를 표시하고 .ENDING싶지만 작동하지 않습니다.
다음은 세 단계로 구성된 솔루션입니다.
또는 교대로 (그리고 더 많은 파이썬) :
#!/usr/bin/env python3 import os for curdir,dirnames,filenames in os.walk('.'): # Props to Cristian Cliupitu for the better python if not any(x.endswith('.ENDING') for x in filenames): print(curdir)
find 명령의 (대부분) 수정 된 버전 :
find . -type d \! -exec bash -c 'set nullglob; test -f "{}"/*.ENDING' \; -print
쉘은을 확장 *하지만 귀하의 경우 쉘이 없으며 find 명령으로 실행되는 테스트 명령 만 있습니다. 따라서 존재 여부를 테스트 한 파일의 이름은 그대로 입니다.*.ENDING
대신 다음과 같은 것을 사용해야합니다.
find . -type d \! -execdir sh -c 'test -e {}/*.ENDING' \; -print
이로 인해 테스트 가 실행될 때 sh가 확장 *.ENDING됩니다 .
출처 : UX.SE에서 globbing 찾기
Dennis Nolte 와 MikeyB의 답변에서 영감을 얻은 이 솔루션을 생각해 냈습니다.
find . -type d \ \! -exec bash -c 'shopt -s failglob; echo "{}"/*.ENDING >/dev/null' \; \ -print 2>/dev/null
그것은 사실에 근거하여 작동합니다
경우 failglob의 쉘 옵션을 설정하고, 더 일치가 발견되지 않는 오류 메시지가 인쇄되고, 명령이 실행되지 않습니다.
그건 그렇고, 그래서 stderr 이 (으)로 리디렉션되었습니다 /dev/null.
#!/usr/bin/perl use strict; use warnings; use File::Find; #this sub is called by 'find' on each file it traverses. sub checkdir { #skip non directories. return unless ( -d $File::Find::name ); #glob will return an empty array if no files math - which evaluates as 'false' if ( not glob ( "$File::Find::name/*.ENDING" ) ) { print "$File::Find::name does not contain any files that end with '.ENDING'\n"; } } #kick off the search on '.' - set a directory path or list of directories to taste. # - you can specify multiple in a list if you so desire. find ( \&checkdir, "." );
트릭을 수행해야합니다 (매우 간단한 테스트 사례에서 작동).
여기에 하나의 라이너가 있습니다.
find ./ -type d ! -regex '.*.ENDING$' -printf "%h\n" | sort -u
편집 : 죄송합니다, 작동하지 않습니다.
find . -type d '!' -exec sh -c 'ls -1 "{}"|egrep -q "*ENDING$"' ';' -print
으로 egrep당신은 당신이 필요로하는 정규식을 교환 할 수 있습니다
ls -1 "{}" find 명령에서 파일 이름을 출력합니다
이 글은 Server 카테고리에 분류되었고 bash, linux, shell 태그가 있으며 소장 마님에 의해 2022-09-27에 작성되었습니다.
특정 결말을 가진 파일이없는 디렉토리 찾기 디렉토리를 표시하고
R에서 eCDF와 신속하게 통합 d\hat{F}_n(y) F^nF^n\hat{F}_nggg 그러나 이것은
Emacs에서 ispell의 개인 사전은 어디에 저장됩니까? 곳은 ispell 개인 사전? 문서가 저장되어있다 http://www.gnu.org/software/emacs/manual/html_node/emacs/Spelling.html가
AUC 대신 정규화 된 Gini Score를 평가로 사용하는 이유는 무엇입니까? Safe Driver Prediction 은 Normalized Gini
내 PHP 설치 경로는 어디입니까 centos를 사용하고
Proudly powered by WordPress