次のファイルがあります
/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:]]* / /'
拡張自体にスペースがないと仮定すると、最初のドットの後から最初のスペース.
まで、スペース以外のすべての文字が削除されます。