폴더 이름 목록이 있습니다
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