创建特定类型的文件

时间:2017-09-28 14:56:45

标签: linux bash shell

我编写了一个shell脚本来创建许多文件。用户从命令行指定文件数及其文件扩展名。这是我的代码

#!/bin/bash

NUM_FILES=0
FILE_TYPES=""
LOCATION=`pwd`

if [ $# -eq 0 ]; then
    echo "**** ERROR: You must specify the number of files you wish to create and (optional) the file types.\n\n"
    exit 1
fi

if [ ! -z $1 ]; then
    NUM_FILES=$1
fi

if [ ! -z $2 ]; then
    FILE_TYPES=$2
else
    FILE_TYPES=".tmp"
fi

n=$NUM_FILES

for (( i=1; i <= n; i++ )) 
do
    touch TEMP_FILE_$i.$FILE_TYPES    #Files created here - this is where my script needs work
    echo "Created file " TEMP_FILE_$i.$FILE_TYPES
done

我的问题涉及创建指定类型的文件。传递给命令行的第二个参数($FILE_TYPES)用于指定要使用的扩展名(txt,java,py等),但是当我运行脚本时,Linux会将所有文件解释为类型文本并只是将扩展名添加到文件名的末尾。

例如,运行bash createFiles.sh 4 java将导致创建名为TEMP_FILE_1.java的四个文本文件,但在Linux GUI中查看目录会显示类型为text的文件。

如何修改shell脚本以便创建指定类型的文件?

2 个答案:

答案 0 :(得分:1)

没有&#34;类型&#34; Linux / Unix中的常规文件。您可以注册任何自己的文件扩展名,以打开具有指定扩展名的文件,并使用您选择的应用程序。

请查看问题的答案:Register file extensions / mime types in Linux

另外要理解名为&#34; Shebangs(#!)&#34;的Linux上的其他关联机制,您可以阅读:File extensions and association with programs in linux

答案 1 :(得分:1)

许多工具会查看实际文件内容以确定文件类型(&#39; la file实用程序)。创建空文件时,没有可以检查的内容来推断文件类型。因此,如果要创建可识别为特定类型的文件,可能必须为您支持的每种文件类型提供模板,并将模板内容复制到创建的文件中。例如,在创建.java文件时编写一些最小的Java程序,在创建.png文件时编写1x1像素图像等。