내 폴더에 많은 파일이 있고 접두사 또는 접미사를 추가하고 싶습니다(둘 다) 줘. 나는 확인했다여기사용할 수 있다는 것을 알았습니다
for filename in *.jpg; do mv "$filename" "prefix_$filename"; done;
로 끝나는 모든 파일에 접두사를 추가합니다 .jpg
(제거하면 .jpg
현재 폴더의 모든 파일에 접두사가 추가됩니다).
그러나 나는 할 수 있기를 바랍니다
- 접미사를 추가합니다(예:
filename.ext
로 이름 바꾸기filename.whatever.ext
). - 접두사 또는 접미사가 이미 있는지 확인하고 건너뜁니다.
addprefix whatever *.ext
또는 같은 매개변수를 허용하는 별칭을 만듭니다.addsufix whatever *.*
답변1
사용하는 경우 bash
이 한 줄의 코드로 작업을 수행할 수 있습니다(변수가 있고 $prefix
쉽게 사용할 수 $suffix
있다고 가정).$extension
mv "$filename" "$prefix${filename%.$extension}$suffix.$extension"
스크립트를 이렇게 만들 수 있습니다
#!/bin/bash
# Usage: addprefix <prefix> <files>
prefix=$1
shift
for f in "$@"
do
mv "$f" "$prefix$f"
done
그리고
#!/bin/bash
# addsuffix <suffix> <files>
suffix=$1
shift
for f in "$@"
do
extension=${f##*.}
if [ -z $extension ]; then
mv "$f" "$f$suffix"
else
mv "$f" "${f%.$extension}$suffix.$extension"
fi
done
답변2
하나 있다펄 rename
명령이 정도면 충분합니다. 하지만 주의하세요. 이라는 여러 가지 다른 명령이 있으므로 인수로 a가 필요한 Perl 스크립트 rename
가 있는지 확인하세요 . perlexpr
이는 Debian 및 그 파생 제품(Ubuntu, Mint 등)의 패키지에서 제공하는 명령이지만 rename
다른 유틸리티 이름이 있을 수 있는 다른 배포판에서는 제공되지 않습니다.perl
rename
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
보시다시피 그렇죠멱등성- 여러 번 호출해도 접두사는 다시 추가되지 않습니다.
문자열의 (길이가 0인) 시작 부분( ^
)을 바꾸거나 prefix
시작 부분 뒤에 선택적 문자열을 바꾸는 방식 으로 작동합니다 prefix
.
나는 이것을 연습용으로 쉘 스크립트나 쉘 함수로 포장할 것입니다. :)
하지만 Postfix는 파일 이름의 어느 부분이 확장자를 구성하는지 파악해야 하기 때문에 조금 더 어렵습니다.
답변3
그리고 zsh
:
autoload zmv # in ~/.zshrc
zmv '(*~*suffix).ext' '${1}suffix.ext'
~
와일드카드는 다음을 의미합니다.와는 별개로존재하다 zsh
.
답변4
현재 폴더에 있는 모든 이미지의 접두사와 확장자를 변경하는 간단한 예입니다.
prefix=EG_
extension=.jpg
for i in $(ls); do mv $i "$prefix${i%.JPG}$extension"; done
변경하기 전에 데이터에 어떤 영향을 미치는지 확인하려면MV통과에코
IMG_7993.JPG의 출력은 EG_IMG_7993.jpg입니다.