给出大量带有专用唯一前缀的文件。
我想将它们的每个文件名替换为以相同的唯一前缀开头的相关文件的文件名。
- UUIDa.txt
- UUIDa_apple.md
- UUIDb.txt
- UUIDb_orange.md
- UUIDc.txt
- UUIDc_banana.md
- UUIDa_apple.txt
- UUIDa_apple.md
- UUIDb_orange.txt
- UUIDb_orange.md
- UUIDc_banana.txt
- UUIDc_banana.md
- UUIDa.txt
- UUIDa_apple.md
prefix -> UUIDa
add "_apple" after UUIDa -> UUIDa_apple
假设直到下划线_的所有内容都被视为UUID,这有效:
#!/bin/bash
for file in *.md; do
echo $file;
EXT="${file##*.}"
FILENAME="${file%.*}"
UUID="${file%_*}"
if [ -f "${UUID}.txt" ]; then
mv "${UUID}.txt" "${FILENAME}.txt"
echo "renamed ${UUID}.txt to ${FILENAME}.txt"
fi
done
这不会遍历目录,但仅适用于当前目录。