ファイル名の一部とフォルダ内のすべてのファイルのファイルパスがファイルごとに1行ずつ含まれるtxtファイルを出力するにはどうすればよいですか?

ファイル名の一部とフォルダ内のすべてのファイルのファイルパスがファイルごとに1行ずつ含まれるtxtファイルを出力するにはどうすればよいですか?

次のファイルがあります

/folder/abc1.txt.gz
/folder/abc2.txt.gz
/folder/abc3.txt.gz

次の内容でtxtファイルを作成したいと思います。

abc1 /folder/abc1.txt.gz
abc2 /folder/abc2.txt.gz
abc3 /folder/abc3.txt.gz

次のコマンドを使用しました。

find /folder -name 'abc*.txt.gz' -type f -printf '%f %p\n' > out.txt

すると、以下が出力されます。

abc1.txt.gz /folder/abc1.txt.gz
abc2.txt.gz /folder/abc2.txt.gz
abc3.txt.gz /folder/abc3.txt.gz

ファイル名の最初の部分(.txt.gzを除く)とパスのみを持つことができる方法は何ですか?

ベストアンサー1

常に同じ拡張子の場合は、次の方法で削除できます。

find /folder -name 'abc*.txt.gz' -type f -printf '%f %p\n' |sed 's/\.txt.gz//'

このsedコマンドは最初の項目のみを削除します.txt.gz

拡張機能を削除するには:

find /folder -name 'abc*.txt.gz' -type f -printf '%f %p\n' |sed 's/\.[^[:space:]]* / /'

拡張自体にスペースがないと仮定すると、最初のドットの後から最初のスペース.まで、スペース以外のすべての文字が削除されます。

おすすめ記事