편집하다:

편집하다:

, , ... 아래의 여러 하위 폴더에 있는 확장자를 가진 파일을 폴더로 복사해야 합니다 .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"

어떻게 작동하나요?

  1. find . -iname "*.tmt".tmt이 파일이 실행되는 위치 및 하위 폴더의 파일 이름 유형을 사용하여 모든 상대 경로를 가져옵니다.
  2. xargs dirname상대 경로 디렉터리 목록을 남기고 파일 이름을 제거합니다.
  3. uniq중복 디렉토리 제거
  4. xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"sh 스크립트를 실행하여 .tmt디렉터리 목록의 모든 파일을 .tmt대상 폴더에 복사합니다. 복사가 성공하면 java command.jarjava 명령으로 바꿔야 하는 스크립트를 실행합니다.

편집하다:

한 번에 1개의 파일을 복사한 다음 각 파일을 복사한 후 명령을 실행하는 것이 목표라면 실제로 작업이 단순화됩니다. 위의 명령은 1과 4 또는 이와 유사한 것으로 축소될 수 있습니다.

find . -iname "*.tmt" | xargs -I{} sh -c "cp -u {} /destination/path && java command.jar"

그러면 .tmt확장자가 발견된 모든 파일을 가져와 find스크립트를 실행하여 java 명령을 복사하고 실행합니다.

관련 정보