하위 디렉터리에서 파일을 찾아 파일이 발견된 위치 이전의 폴더에 복사하는 방법

하위 디렉터리에서 파일을 찾아 파일이 발견된 위치 이전의 폴더에 복사하는 방법

다음과 같은 파일 디렉터리 구성표가 있습니다.

.
|-- FOO1
|   `-- p58
|       `-- file1.csv
|-- FOO2
|   `-- p63
|       `-- file2.csv

각 CSV 파일은 FOO 또는 BAR의 하위 디렉터리에 있습니다. 내가하고 싶은 것은 그것을 이전 디렉토리에 복사하는 것입니다. 결과는 다음과 같습니다.

.
|-- FOO1
|   `-- file1.csv
|   `-- p58
|       `-- file1.csv
|-- FOO2
|   `-- file2.csv
|   `-- p63
|       `-- file2.csv

나는 이것을 시도했지만 실패했습니다.

find . -type f -name "*.csv" | grep FOO | xargs -I {} cp {} ..;

올바른 접근 방식은 무엇입니까?

답변1

GNU find를 사용하면 다음과 같은 옵션을 사용할 수 있습니다 -execdir.

find . -type f -name "*.csv" -execdir cp --target-directory=.. {} +

에서 man find:

-execdir 명령;

-execdir 명령{} +

-exec와 비슷하지만 지정된 명령은 일반적으로 검색을 시작한 디렉터리가 아닌 일치하는 파일이 포함된 하위 디렉터리에서 실행됩니다.

그래서 나는 cp --target-directory=..find 명령이 p58디렉토리에 있는 경우 ..상위 디렉토리 아래에 파일을 배치하는 를 사용합니다 FOO1.

나는 이것을 사용하여 현재 디렉터리에서 {} +일치하는 모든 파일을 대상 디렉터리(또는 이 경우 상위 디렉터리)로 전달할 수 있습니다.*.csv

관련 정보