次の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 {} +