ファイル名が長すぎないように、txt ファイルの各行に新しいファイルを作成します。

ファイル名が長すぎないように、txt ファイルの各行に新しいファイルを作成します。

.txtファイルの各テキスト行に対して新しいファイルを作成しています。

file=/tmp/textFile.txt
while IFS= read -r line
do
        printf "%s\n" "$line" > /tmp/"$line"txt
done < "$file"

ファイル名が長すぎるというエラーメッセージが表示され続けます。新しいファイルのタイトルを特定の文字数に減らす方法はありますか?

ベストアンサー1

igを使用して、awk1行の内容を最大100文字のファイル名で出力します(前に/tmp/、後に.txt)。

awk '{ name = "/tmp/" substr($0,1,100) ".txt"; print >name; close(name) }' /tmp/textFile.txt

たとえば、各名前と文字を使用して操作を実行する必要がある場合は、その文字をアンダースコア/に変更します(これにより、ディレクトリ内のファイルに加えてファイルシステム内の任意のファイルが上書きされるのを防ぐことができます)。./tmp

awk '{ name = "/tmp/" substr($0,1,100) ".txt"; gsub("[/.]","_",name); print >name; close(name) }' /tmp/textFile.txt

おすすめ記事