gpt4 book ai didi

linux - 将给定类型的所有文件从 Unix 格式转换为 Dos 格式的 Bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:19 24 4
gpt4 key购买 nike

对于我在 CentOS 和 Windows 两个系统上开发的 C++ 项目,我需要能够在 CentOS 和 Windows 之间来回切换。我希望能够将给定类型(例如 *.cpp、*.h 或 *.txt)的所有文件从 Unix 转换为 Dos。

我有一个转换单个文件的 bash 脚本,但我希望能够只输入文件类型的扩展名或 *.FILETYPE 来转换给定目录中该类型的所有文件。

这是工作脚本,我需要做什么才能使其一次处理多个文件。我试过使用 for 循环,但出现语法错误。

#! /bin/sh

# Convert a text based file from Unix Format to Dos Format
# The Output file should be the name of the input file with
# WF inserted before the file extention
#
# Examples
# convert Unix format abc.txt to abcWF.txt Windows Format
# convert Unix format abc.cpp to abcWF.cpp Windows Format

echo "In u2w FileToConvert = $1"
FileBase=$(basename $1)
FileExtension="${FileBase##*.}"
FileBase="${FileBase%.*}"
OutputSuffix="WF.$FileExtension"
OutputFile="$FileBase$OutputSuffix"
commandment="unix2dos -n $1 $OutputFile"
echo $commandment
unix2dos -n $1 $OutputFile
echo "diff -w $1 $OutputFile"
diff -w "$1" "$OutputFile"

exit

示例运行

$  bd2w TestResults.txt
In u2w FileToConvert = TestResults.txt
unix2dos -n TestResults.txt TestResultsWF.txt
unix2dos: converting file TestResults.txt to file TestResultsWF.txt in DOS format ...
diff -w TestResults.txt TestResultsWF.txt

最佳答案

将脚本包装在 for file in "$@" 循环中,并将所有提及的 $1 替换为 $file

#!/bin/sh

for file in "$@"; do
echo "In u2w FileToConvert = $file"

FileBase=$(basename "$file")
FileExtension="${FileBase##*.}"
FileBase="${FileBase%.*}"
OutputSuffix="WF.$FileExtension"
OutputFile="$FileBase$OutputSuffix"

echo "unix2dos -n $file $OutputFile"
unix2dos -n "$file" "$OutputFile"

echo "diff -w $file $OutputFile"
diff -w "$file" "$OutputFile"
done

关于linux - 将给定类型的所有文件从 Unix 格式转换为 Dos 格式的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com