현재 디렉토리를 '찾기'하지 않는 방법


11

현재 find지정된 디렉토리에서 특정 패턴과 일치하는 모든 파일 및 폴더 구조를 복사 하려고합니다 . 거의 거의 있습니다!

특히, 지정된 경로에서 '_'문자로 시작하지 않는 모든 폴더를 재귀 적으로 복사하고 싶습니다.

find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;

/ source / path / with / directories / 경로에는 '_'및 기타로 시작하는 기계 별 디렉토리가 있으며 다른 디렉토리 만 복사하는 데 관심이 있습니다. 나 이외의 이유로 find 명령은 / source / path / with / directories / 디렉토리를 반환하므로 '_'로 시작하는 디렉토리와 그 내용을 복사합니다.

왜 그런지에 대한 힌트가 있습니까?

감사,

파스칼


답변:


14

find루트 경로는 기준과 일치하므로 루트 경로를 반환합니다. 즉, 디렉토리이고로 시작하지 않습니다 _.

당신은 찾고 있습니다 -mindepth 1.

$ cd /tmp
$ mkdir a
$ touch a/b
$ mkdir a/c
$ touch a/c/d
$ find a
a
a/b
a/c
a/c/d
$ find a -mindepth 1
a/b
a/c
a/c/d

참조 : 맨 페이지 찾기


우수한! 내가 원하는대로 작동합니다. 나는 그것을 추가하여 작동시켰다! 이름은 'files'이지만 나에게 잘못되었다고 생각합니다.
Pinpin

0

다음에서 변경 :

find /source/path/with/directories ...

에:

(shopt -s dotglob; find /source/path/with/directories/* ... )

그 방법 /source/path/with/directories은 포함되지 않습니다.

shopt -s dotglob그 때문에 인 *도로 시작하는 파일과 디렉토리 일치합니다 .(숨겨진 파일, 디렉토리).

그리고 모든 것은 서브 쉘 내에 만 (...)영향을 미치기 위해 서브 쉘에 싸여 있습니다 shopt. 그렇지 않으면 나중에로 실행 취소해야합니다 shopt -u dotglob.


로 시작하는 디렉토리 항목에 대해서는 실패합니다 .. 시도하지 마십시오 .*, 또는 당신이 의도하지 않은 다른 많은 것들과 일치합니다. ;-)
zigg

좋은 지적은을 사용하여 답변을 업데이트했습니다 shopt.
janos 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.