먼저이 글은 내가 읽은 일부 게시물의 정확한 복제본이지만 참조하는 데는 아무런 행운이 없다는 것을 알고 싶습니다.sed 및 mv를 사용하여 파일에 문자 추가
나는 모두 매우 엄격한 명명 규칙 인 5_##_<name>.ext
을 따른다. 내 문제는 원래이 파일들을 만들 때 5_100_
이상이 내 주문을 망칠 것임을 깨닫지 못했다는 것이었다.
이제 01과 99 사이의 모든 숫자 앞에 0을 추가하려고합니다. 파일 내용에 대해 작동하는 sed를 사용하여 bash 스크립트를 작성했습니다 (파일 이름도 파일에 있음) :
#!/bin/bash
for fl in *.tcl; do
echo Filename: $fl
#sed -i 's/5_\(..\)_/5_0\1_/g' $fl
done
그러나 내용 만 변경되며 파일 이름은 변경되지 않습니다. 나는 mv가 해결책이라는 것을 읽었다. (rename
은 더 간단하지만 내 시스템에는 없다.) 내 여러 시도의 나의 현재 화신은 다음과 같습니다
mv "$fl" $(echo "$file" | sed -e 's/5_\(..\)_/5_0\1_/g')
를하지만 나에게 오류 제공 : mv: missing destination file operand after <filename>
가 다시 말하지만, 나는 중복에 대한 미안하지만 난 그것을 읽어 내 문제를 해결할 수 없습니다입니다. 나는 단지 mv
과 sed
의 조합을 잘못 사용하고있을 것이라고 확신합니다.
설명에 의견을 입력했습니다. 나는 $ fl 대신에 $ file을 사용했다. 이 같은
의
sed --posix
를 사용합니다. – Wintermute나는 문자 그대로 최악이다. 고맙습니다. 이 의견을 답으로 남기려면이 질문을 선택하고 닫는 것이 좋습니다. – Joshua