如何为目录中找到的每个文件创建一个文本文件?

如何为目录中找到的每个文件创建一个文本文件?

我是 Unix 新手,在执行这个循环时遇到了困难。

我有一个包含文件列表的目录,我可以在文本文件中列出所有这些文件。

我有一个包含以下内容的文本文件:

  • 文件名01.xml
  • 文件名02.xml
  • 文件名03.xml
  • 文件名NN.xml

我想为每个内容分别创建一个文本文件。输出应该是这样的:

- 文本文件的文件名:Filename01.txt - 文本文件的内容:FileName01.xml

等等等等

我正在尝试使用 for 循环为每个内容创建一个文本文件,但我似乎无法成功。

这是我当前正在编写的脚本:

#!/bin/bash
ls /directory/input > filelist.txt
for f in filelist.txt;
do
    printf f > 'file_*.txt'
done

答案1

我建议

#!/bin/bash

shopt -s nullglob

for f in /directory/input/*.xml; do
  bn=${f##*/}
  printf '%s\n' "$bn" > "${f%.xml}.txt"
done

外壳参数扩展有关前缀和后缀删除语法的说明。

相关内容