전체 파일 경로 정보를 xargs에 전달

전체 파일 경로 정보를 xargs에 전달

수정 날짜 순서대로 jpg 파일을 나열한 다음 xargs를 사용하여 숫자 순서(0.jpg, 1.jpg, 2.jpg 등)로 이름을 바꾸는 bash 스크립트가 있습니다. 이는 여러 디렉터리에서 발생해야 합니다. 코드는 다음과 같습니다.

ls -1rt "/media/171/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'
ls -1rt "/media/193/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'
ls -1rt "/media/211/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'

문제는 스크립트를 실행하면 파일이 제대로 나열되지만 xargs에서 지정된 파일을 찾을 수 없다는 오류가 발생한다는 것입니다. 각 디렉토리에서 명령을 실행하는 경우에만 작동합니다. Bash 스크립트에서는 "cd /"를 수행할 수 없다는 것을 깨달았습니다. 문제는 xargs가 전체 파일 경로를 전달하지 않는 것 같습니다. xargs 명령에 전체 파일 경로를 전달하는 방법은 무엇입니까?

답변1

이 경우 파일에 대해 발생할 수 있는 유일한 오류는 xargs실행 파일을 찾을 수 없다는 것입니다. rename파일에 관한 다른 모든 내용은 xargs실행 중인 프로그램에서 나와야 합니다.

이 명령은 쉘 스크립트에서 사용할 수 있습니다 cd. 그러나 이 경우 스크립트는 어떤 디렉토리를 사용해야 하는지 알 수 없습니다.

당신은 시도하고 싶을 수도 있습니다

( cd "/media/171/" && ls -1rt | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e' )

관련 정보