如何使用内容的第一个单词重命名文件夹中的所有文件?例如,如果 a.txt 的第一行包含“Unix is an OS”,则 a.txt 应重命名为 Unix.txt
尝试这个:
for f in *.txt; do d="$(head -1 "$f" | awk '{print $1}').txt"; if [ ! -f "$d" ]; then mv "$f" "$d"; else echo "File '$d' already exists! Skiped '$f'"; fi; done
Run Code Online (Sandbox Code Playgroud)
或更长的变体(作为脚本):
#!/bin/sh
for f in *.txt; do
d="$(head -1 "$f" | awk '{print $1}').txt"
if [ ! -f "$d" ]; then
mv "$f" "$d"
else
echo "File '$d' already exists! Skiped '$f'"
fi
done
Run Code Online (Sandbox Code Playgroud)
如果目标文件存在,则单行跳过它。