폴더에있는 모든 .txt 파일의 복사본을 만들려고하지만 이름이 바뀌므로 .html 파일이됩니다..을 포함하는 문자열을 바꿉니다. sed 사용
for f in my-txt-folder/*.txt
do
a="$(echo $f | sed s/.txt/.html/)"
cp "$f" "$a"
done
이 내가 그것을 실행할 때 나는 오류
my.html-folder/file.txt: No such file or directory.
나는 그것이 바깥 쪽 폴더에있는 "-txt을"의 이름을 변경하기 때문에이 오류가납니다 알고를 얻을, 지금까지 내 코드입니다 ,하지만 어떻게 그 일을 그만 두겠습니까? 나는 또한 "\ .txt"를 대체하는 데 노력했지만 여전히 폴더 이름이 일치한다고 생각합니다. ".txt"만 일치 시키려면 어떻게합니까? 누구나 묻기 전에 폴더로 들어가서 스크립트를 실행하면 안됩니다.
'sed's/\. txt/.html/''또는'sed's/.txt $/.html/''(백 슬래시를 피하는 역 슬래시 '.txt'는 파일 이름을 끝내고, glob는'.'가'.'과 일치 함을 보장합니다.) ... 패턴 주위에 작은 따옴표를 사용합니다. 사용하지 않으려면 두 개의 백 슬래시를 사용해야합니다. 또한, 파일 이름을 인용 할 필요가있을 때마다,'a = "$ (echo"$ f "| sed.s/.txt/.html /)"'- 매번 이중 인용 부호로 묶음 필요에 따라 –
또한 regex [here] (https://regex101.com/r/aP3bQ6/2)로 재생할 수 있습니다 ... – anishsane