
저는 Linux를 사용하고 있으며 두 개의 디렉터리를 사용하여 두 번째 디렉터리를 첫 번째 디렉터리로 이동하고(두 번째 디렉터리는 첫 번째 디렉터리의 하위 디렉터리가 됨) 두 번째 디렉터리의 모든 파일은 " .txt"가 확장됩니다. 예: 다음을 dir2
포함합니다.
file1
file2
dir3
file3.jmp
달리고 ./shell_scrip dir1 dir2
나면dir1
포함하다 dir2
다음과 같습니다 dir2
.
file1.txt
file2.txt
dir3
file3.txt
확장자를 변경하려고 했으나 다음과 같은 오류가 발생했습니다.
mv: cannot stat `file1`: No such file or directory
다음 코드를 사용하세요.
#!/bin/sh
for file in $2/*;
do
f=$(basename "$file")
mv "$f" "${f}.txt"
done
답변1
dir2를 이동하거나 참조하지 않았습니다. 다음과 같이 시도해 보세요.
#!/bin/sh
mv "$2" "$1" || exit # Make $2 a subdirectory of $1
cd "$1/$(basename "$2")" || exit # Change directories for simplicity
for f in *; do
mv "$f" "${f%.*}.txt" # Add or change the extension
done
및 명령 뒤에 추가하면 || exit
명령이 실패할 경우 스크립트가 종료되어 상황이 예상한 대로 나오지 않을 경우 약간의 보호 기능을 제공합니다.mv
cd
표현은 이름에 마침표가 없는 것과 같습니다 ${f%.*}
. $f
그렇지 않으면 마침표(마지막 마침표)와 그 뒤의 모든 내용이 제거됩니다.