Bashのファイル名リストからファイル拡張子を削除する方法

Bashのファイル名リストからファイル拡張子を削除する方法

次のbashスクリプトを使用して生成されたファイルのリストからファイル拡張子を削除しようとしています。

 #!/bin/bash
 file_list=$(find . -type f) #assuming that the files are stored in the same directory
 trimmed_file_list=$(printf '%s\n' "${file_list[@]%.*}")
 printf '%s\n' "${trimmed_file_list[@]}"

この拡張機能は拡張機能をクリーンアップしました。最後リストに項目がありますが、前の項目はありません。

たとえば、次のリストが必要です。

 file1.pdf
 file2.pdf
 file3.png

~になる

 file1
 file2
 file3

しかし、私が得るものは次のとおりです。

 file1.pdf
 file2.pdf
 file3

私はこれをループでやりたくなく、パラメータ拡張を使用したいと思います。ファイルの最後の拡張子だけを削除したいので、切り取りを避けたいです。

パラメータの拡張に関するトピックがかなり多く、bashが改行のfindために窒息する可能性があるようです...よくわかりません。他の既存のトピックが問題を説明している場合、何が起こっているのか完全には理解できません。

関連しているようですが、私の問題を解決できないようなトピック:

ベストアンサー1

1つのコマンドですべてを行うことができます。

find /path/to -type f -execdir bash -c 'printf "%s\n" "${@%.*}"' bash {} +

おすすめ記事