일부 파일을 복사하고 프로세스에 해당 상위 디렉터리를 포함하고 싶습니다.
현재 구조는 다음과 같습니다.
/Module1/A/downloads/m13312/file.pdf
/Module1/A/downloads/m17312/file.pdf
/Module1/B/downloads/m18312/file.pdf
/Module2/A/downloads/m19312/file.pdf
경로의 마지막 두 부분을 잡고 싶으므로 다음과 같이 끝납니다.
/mydir/m13312/file.pdf
/mydir/m17312/file.pdf
/mydir/m18312/file.pdf
/mydir/m19312/file.pdf
cut
올바른 결과를 사용 하여 얻으 려고 했지만 awk
경로가 올바르게 반환되지 않는 것 같습니다. 다음은 내가 필요한 것에 응답하는 예입니다(아직 복사 부분을 다루지 않았습니다).
find . -type 'f' -path '*downloads*' -print0 | xargs -0 -I {} echo `cut -d/ -f4-5 <<<{}`
이것은 단지 전체 경로를 인쇄하므로 아직 사용할 수 없다는 것을 알고 있습니다.
답변1
pax
이 옵션을 지원하는 경우 -0
:
find . -type 'f' -path '*downloads*' -print0 |
pax -rw0s'|.*downloads/||' /mydir
답변2
이렇게 하면 트릭을 수행할 수 있습니다.
for file in /Module*/*/downloads/m13312/file.pdf
do
file_directory="/mydir/$(basename "$(dirname "$file")")"
mkdir -p "$file_directory"
cp "$file" "$file_directory"
done