Linux 提取不带扩展名的文件basename

Linux 提取不带扩展名的文件basename,linux,shell,unix,Linux,Shell,Unix,我正在尝试使用find命令递归列出目录中的所有pdf文件: find -name "*.pdf" > all_pdf.txt 输出正确,如图所示(all_pdf.txt): 但我的要求是只列出所有文件的basename,而不包括其扩展名,如: c_primer_5th_edition.pdf C++Complete Reference (3rd Ed.).pdf Bjarne Stroustrup - The C++ Programming Language(Third Edition)

我正在尝试使用
find
命令递归列出目录中的所有
pdf
文件:

find -name "*.pdf" > all_pdf.txt
输出正确,如图所示(all_pdf.txt):

但我的要求是只列出所有文件的
basename
,而不包括其扩展名,如:

c_primer_5th_edition.pdf
C++Complete Reference (3rd Ed.).pdf
Bjarne Stroustrup - The C++ Programming Language(Third Edition).pdf
...
如何通过提供
filename
(在本例中为'all_pdf.txt')作为
basename
命令的参数来实现这一点。

使用
sed
要从
all_pdf.txt
中的每一行中删除目录名,请使用:

$ sed -e 's|.*/||' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani.pdf
C++Complete Reference (3rd Ed.).pdf
Bjarne Stroustrup - The C++ Programming Language(Third Edition).pdf
Essential_C++.pdf
[...snip...]
此外,如果要删除文件扩展名,请使用:

$ sed -e 's|.*/||' -e 's|\.pdf$||' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]
使用
grep
要同时删除
.pdf
扩展名,请执行以下操作:

$ grep -Po '[^/]*(?=.pdf$)' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]
$ awk '{sub(/.*\//, ""); sub(/\.pdf$/, "")} 1' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]
使用
awk
要同时删除
.pdf
扩展名,请执行以下操作:

$ grep -Po '[^/]*(?=.pdf$)' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]
$ awk '{sub(/.*\//, ""); sub(/\.pdf$/, "")} 1' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]
术语“扩展名”通常指文件名的尾随部分,紧跟在最后一个
(在本例中为
pdf
)。
$ awk '{sub(/.*\//, ""); sub(/\.pdf$/, "")} 1' all_pdf.txt 
data structures , algorithms and applications in c++ by sartraj sahani
C++Complete Reference (3rd Ed.)
Bjarne Stroustrup - The C++ Programming Language(Third Edition)
Essential_C++
[...snip...]