폴더 이름의 일부를 제거하는 방법

폴더 이름의 일부를 제거하는 방법

폴더 이름 목록이 있습니다

file1xxx
file2xxx
file3xxx

이름에서 "xxx"를 제거하고 싶습니다. 나는 다음 bash를 시도했다

for dirname in $(cat ${in}/all.txt); do # all.txt include the name of the folders in specific path ${in}
    [ -d "$dirname" ] || continue
    mv ${in}/$dirname ${in}/${dirname//.nii/}
done

그러나 그것은 소용이 없습니다! 어떤 제안이 있으십니까?

답변1

여기에서 bash할 수 있습니다:

while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%???}"; done <all.txt

all.txt그러면 파일을 한 줄씩 읽고 해당 줄이 나타내는 디렉터리가 있는지 확인합니다. 존재하는 경우 그에 따라 이름이 변경됩니다.

편집하다:

한 문자만 삭제하려면 다음을 사용하세요.매개변수 확장패턴 ${dir%???}은 입니다 ${dir%?}. 여기서 메타문자는 ?의 개별 문자를 나타냅니다 bash. 그래서:

while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%?}"; done <all.txt

관련 정보