다음과 같은 파일 디렉터리 구성표가 있습니다.
.
|-- 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