通过Shell脚本使用现有文件夹和文件名创建xml文件

时间:2019-09-03 09:41:42

标签: bash shell

我对Shell脚本很陌生。我需要使用文件夹和文件夹中的文件创建一个XML文件。要求如下所示。

例如:我有一个名为“ classes”的文件夹
在此文件夹下,我有多个文件,例如“ 1.cls”,“ 2.cls”,“ 3.cls”等,

同样,我还有其他文件夹。
例如:
文件夹名称-'页面'
该文件夹名称下的文件-“ 1.page”,“ 2.page”,“ 3.page”等,

现在,我的XML文件应如下所示:

<types>
    <members>1</members>
    <members>2</members>
    <members>3</members>
    <name>classes</name>
</types>
<types>
    <members>1</members>
    <members>2</members>
    <members>3</members>
    <name>Pages</name>
</types>

1 个答案:

答案 0 :(得分:0)

在存在其他必需目录及其文件的目录中尝试以下操作:

#!/bin/bash

declare -r XML_FILE="Sample.xml"

[ -f ${XML_FILE} ] && : > ${XML_FILE}

for directory_name in $(ls -F . | grep '/' | sed 's|/||')
do
   echo -e "<types>" >> ${XML_FILE}
   dirfiles=$(ls -A ${directory_name})
   if [ "${dirfiles}" ] ; then
      for files in ${dirfiles}
      do
         echo -e "\t<members>${files/.*}</members>" >> ${XML_FILE}
      done
   fi
   echo -e "\t<name>${directory_name}</name>" >> ${XML_FILE}
   echo -e "</types>" >> ${XML_FILE}
done

示例

根据您的示例语句

mkdir -p classes Pages
touch classes/{1.cls,2.cls,3.cls}
touch Pages/{1.page,2.page,3.page}

让脚本为xmls.sh

执行脚本:bash xmls.sh

查看Sample.xml的输出:cat Sample.xml

<types>
    <members>1</members>
    <members>2</members>
    <members>3</members>
    <name>classes</name>
</types>
<types>
    <members>1</members>
    <members>2</members>
    <members>3</members>
    <name>Pages</name>
</types>

现在,Sample.xml文件包含上述XML元素。