ディレクトリ内の各ファイルのテキストファイルを作成するには?

ディレクトリ内の各ファイルのテキストファイルを作成するには?

私は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

バラよりシェルパラメータ拡張プレフィックスとサフィックスを削除する構文のガイドラインです。

関連情報