コンテンツの最初の単語を使用してフォルダ内のすべてのファイル名を変更するには?たとえば、a.txtの最初の行に「UnixはOSです」が含まれている場合は、a.txtの名前をUnix.txtに変更する必要があります。
ベストアンサー1
この試み:
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
またはより長い変形(スクリプトとして):
#!/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
ターゲットファイルが存在する場合、この1行はそのファイルをスキップします。