将文件中的字符串添加到文件名

将文件中的字符串添加到文件名

我需要重命名文件以包含在第一行中找到的字符串。

前任:

[acoder@test]# head -1 FILE001.DAT
XYZ123

这是我最好的猜测:

for file in /some/dir/*.DAT
do
        CODE=`head -1 "$file"`
        echo "${file%.DAT}.$CODE.DAT"
done

输出:

.DATa/some/dir/FILE001.XYZ123

期待看到:

/some/dir/FILE001.XYZ123.DAT

出了什么问题?

答案1

如果文件来自 Windows 系统,则末尾可能有回车符。

您可以通过CODE像这样分配给变量来解决这个问题:

CODE="$( head -n 1 "$file" | tr -d '\r' )"

相关内容