FreeBSD 9.2 RELEASE p2
파일이 있습니다 dirs.txt
. 이 파일에는 아래와 같이 줄 바꿈으로 구분된 디렉터리 목록이 있습니다.
/etc
/home
/home/goods/
먼저 모든 디렉터리에서 이름이 "good"이거나 "(NODES_'TASK')" 문자열이 포함된 파일을 찾은 다음 이 모든 파일을 디렉터리에 복사해야 합니다 /tmp
.
나는 이것이 다음과 같아야 한다고 생각합니다.
$ find $fromDirs.txt -type f -name 'good' | \
grep -lr '\(NODES_\'TASK\'\)' $fromDirs.txt | > /tmp
답변1
내가 이해한 바로는 디렉토리 목록이 포함된 파일이 있습니다. 모든 파일을 원합니다:
- 파일 내용에 포함된 목록의 디렉터리 내에 위치
(NODES_'TASK')
- 목록에 있는 파일 이름에는
good
.
그런 다음 일치하는 파일을 /tmp
.
IFS=$'\n' read -d '' -r -a dirs < fromDirs.txt
find "${dirs[@]}" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;
이것은 fromDirs.txt
배열로 구분된 개행 문자를 읽습니다 $dirs
.
그런 다음 find
해당 디렉터리를 살펴보고 경로의 디렉터리에 가 포함되어 있거나 good
파일에 포함되어 있으면 (NODES_'TASK')
해당 파일을 /tmp
.
(참고: 여기서는 파일 목록을 개행 문자로 분할하기 위해 bash 관련 기능을 사용하고 있습니다.)