Linux에서 파일 시작 부분에 문자열을 추가하여 파일 이름을 재귀적으로 바꿉니다.

Linux에서 파일 시작 부분에 문자열을 추가하여 파일 이름을 재귀적으로 바꿉니다.

나는 많은 명령을 시도했다. 아무도 그 일을 하지 않았습니다. 이름 바꾸기/찾기 또는 다른 것을 사용하여 하위 폴더의 파일 시작 부분에 문자열을 재귀적으로 추가하는 방법은 무엇입니까?

file.jpg --> image_file.jpg

find . -name '*.jpg'  -exec  rename  -n "s/^/image_/" *.jpg {} +
for pic in '*.jpg' ; do  rename  -n "s/^/image_/ ${pic}"; done
find . -name '*.jpg'  -exec rename -n "s/^/image_/ .jpg '{}' \;
find "/files/" -type f -exec rename 's/^/image_/' '{}' \;
find . -name '*.jpg' -type f -exec bash -c 'echo "$1" "${1/^/image_/}"' -- {} \;

왜 이런 말이 나오는지Invalid cross-device link find . -name '*.jpg' -execdir rename 's:./:/image_:' {} +

답변1

ㅋ 찾았어! 이 명령은 모든 하위 디렉터리에서 각 파일의 시작 부분에 문자열을 반복적으로 추가합니다. 왜 작동하는지 아직 모르겠지만 작동합니다. Ρ실제 결과를 보려면 '-n'을 제거하세요.

find . -name '*.jpg' -execdir rename -n 's:./:./image_:' {} +

결과 예:rename(./28652316400.jpg, ./image_28652316400.jpg)

  • s대체한다는 뜻이다.

  • :내가 이해한 대로, 그것은 "."이 처음 나타나는 곳으로 가는 것을 의미합니다. 그런 다음 "."으로 이동한 다음 "image_"로 대체하고 종료합니다. (그러나 내가 틀렸을 수도 있습니다). 읽다여기bash와 스크립트에서 콜론의 의미에 대해 자세히 알아보세요.

관련 정보