Linux에서 모든 파일 및 디렉터리 이름을 소문자로 바꿉니다.
이전 기사에서는 특정 디렉터리 내의 파일 및 하위 디렉터리 수를 계산하는 방법을 설명했습니다. 이 가이드에서는 Linux에서 모든 파일 및 디렉터리 이름을 소문자로 바꾸는 방법을 보여줍니다.
추가 읽기: Linux에서 상위 디렉터리 및 파일(디스크 공간)을 찾는 방법
이를 달성하는 방법에는 여러 가지가 있지만 가장 효율적이고 신뢰할 수 있는 두 가지 방법을 설명하겠습니다. 이 가이드에서는 다음과 같은 구조를 갖는 Files
라는 디렉터리를 사용했습니다.
find Files -depth
1. find, xargs 및 rename 명령을 함께 사용
rename은 Linux에서 한 번에 여러 파일의 이름을 바꾸는 간단한 명령줄 유틸리티입니다. 찾기 유틸리티와 함께 사용하여 다음과 같이 특정 디렉터리의 모든 파일이나 하위 디렉터리의 이름을 소문자로 바꿀 수 있습니다.
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
위 명령에 사용된 옵션에 대한 설명입니다.
-깊이
– 디렉터리 자체 앞에 각 디렉터리의 내용을 나열합니다.-n 1
– find 출력에서 명령줄당 최대 하나의 인수를 사용하도록 xargs에 지시합니다.
Files
디렉터리에서 파일과 하위 디렉터리의 이름을 소문자로 바꾼 후의 샘플 출력입니다.
아래 설명된 대로 스크립트에서 find 및 mv 명령을 사용하는 또 다른 대체 방법입니다.
2. 쉘 스크립트에서 find 및 mv 명령 사용
먼저 스크립트를 만듭니다(원하는 이름으로 지정할 수 있습니다).
cd ~/bin
vi rename-files.sh
그런 다음 아래 코드를 추가하세요.
#!/bin/bash
#print usage
if [ -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if [ "${name}" != "${new_name}" ]; then
[ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0
파일을 저장하고 닫은 다음 스크립트를 실행 가능하게 만들고 실행합니다.
chmod +x rename-files.sh
rename-files.sh Files #Specify Directory Name
다음 관련 기사를 읽고 싶을 수도 있습니다.
- Linux의 "모든 것은 파일이다" 및 파일 유형에 대한 설명
- fswatch – Linux에서 파일 및 디렉터리 변경 또는 수정 사항을 모니터링합니다.
- Fasd – 파일 및 디렉터리에 대한 빠른 액세스를 제공하는 명령줄 도구
- FSlint – Linux에서 중복 파일을 찾아 제거하는 방법
이 가이드에서는 Linux에서 모든 파일과 디렉터리의 이름을 소문자로 바꾸는 방법을 설명했습니다. 오류가 발생하면 아래 피드백 양식을 통해 문의해 주세요. 동일한 작업을 수행하는 다른 방법을 제공할 수도 있습니다.