我对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>
答案 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元素。