, , ... 아래의 여러 하위 폴더에 있는 확장자를 가진 파일을 폴더로 복사해야 합니다 .tmt
(예: ).\main\allfiles\
/individualfiles/1/
/individualfiles/2/
/individualfiles/abc/
/individualfiles/xyz/
/individualfiles/zzz/
내 문제는 한 폴더에서 모든 파일을 복사한 후 java 명령을 실행한 다음 다음 폴더에서 다시 복사하고 java 명령을 다시 실행해야 한다는 것입니다.
파일별로 복사합니다. 첫 번째 파일을 복사한 후 /individualfiles/1/
다음 파일을 복사한 /individualfiles/1/
후 다음 폴더로 이동하여 /individualfiles/2/
파일을 다시 개별적으로 복사합니다.
폴더에서 모든 파일을 복사한 후 java 명령을 실행하는 방법을 알려주십시오.
답변1
여러 Linux 명령줄 유틸리티를 함께 연결하여 이 작업을 수행할 수 있습니다.
이런 것들,
find . -iname "*.tmt" | xargs dirname | uniq | xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"
어떻게 작동하나요?
find . -iname "*.tmt"
.tmt
이 파일이 실행되는 위치 및 하위 폴더의 파일 이름 유형을 사용하여 모든 상대 경로를 가져옵니다.xargs dirname
상대 경로 디렉터리 목록을 남기고 파일 이름을 제거합니다.uniq
중복 디렉토리 제거xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"
sh 스크립트를 실행하여.tmt
디렉터리 목록의 모든 파일을.tmt
대상 폴더에 복사합니다. 복사가 성공하면java command.jar
java 명령으로 바꿔야 하는 스크립트를 실행합니다.
편집하다:
한 번에 1개의 파일을 복사한 다음 각 파일을 복사한 후 명령을 실행하는 것이 목표라면 실제로 작업이 단순화됩니다. 위의 명령은 1과 4 또는 이와 유사한 것으로 축소될 수 있습니다.
find . -iname "*.tmt" | xargs -I{} sh -c "cp -u {} /destination/path && java command.jar"
그러면 .tmt
확장자가 발견된 모든 파일을 가져와 find
스크립트를 실행하여 java 명령을 복사하고 실행합니다.