내 디렉토리에 많은 파일이 있습니다. 이름에 "abc" 및 "xyz"가 포함된 파일을 나열, 복사 또는 이동하고 싶습니다. 패턴 일치에 AND를 사용하는 방법은 무엇입니까?
일반 명령: ls *abc* *xyz*
OR에만 사용됩니다.
답변1
이 방법을 사용하십시오.
ls *abc*xyz* *xyz*abc*
in mv
또는을 사용하면 와일드카드를 사용하여 파일을 찾고 복사/이동하려는 파일 이상의 것을 가질 수 있으므로 cp
옵션을 사용하여 대상 디렉터리를 지정하기만 하면 됩니다 .-t
cp -t /path/to/dest *abc*xyz* *xyz*abc*
또는 find
다음과 같은 것을 사용하십시오:
find \( -name '*abc*' -a -name '*xyz*' \)
이는 find -name '*abc*' -name '*xyz*'
에 문서화된 것과 동일 합니다.man find
:
식 1 식 2
한 줄에 있는 두 표현식은 암시적 "and"로 연결된 것으로 간주됩니다.식 2다음과 같은 경우 평가되지 않습니다.식 1가짜입니다.식 1-ㅏ식 2
그것은 같은식 1 식 2.식 1-그리고식 2
그것은 같은식 1 식 2이지만 POSIX와 호환되지 않습니다.
-exec ...
위 명령에 추가하여 찾은 파일로 원하는 작업을 수행 할 수 있습니다 .
find \( -name '*abc*' -a -name '*xyz*' \) -exec do-stuffs {} +