我有一个名为 lib 的文件夹。该文件夹中有一些文件。我想获取所有以 .jar 结尾的文件的名称,并将它们连接成一行,用空格分隔。我根本不想要路径名。
我尝试过这个:
ls lib/*.jar | xargs
输出为
lib/file1.jar lib/file2.jar
但我想要的是
file1.jar file2.jar
我怎样才能做到这一点?
我也尝试过查找,但遇到了同样的问题
find lib -name *.jar | xargs
答案1
另一个find lib -maxdepth 1 -name *.jar -printf '%f\n' | xargs
%f File's name with any leading directories removed (only
the last element).
答案2
这对我有用,但似乎应该有一个更简单(即更少黑客和更漂亮)的方法:
$ ls lib/*.jar | xargs -n 1 基本名称| xargs
答案3
只是为了说明您可以通过不同的方式实现相同的目的:如果您使用 bash,您可以执行以下操作:
for i in lib/*.jar; do echo ${i#*/}; done|xargs
或者
echo $(for i in lib/*.jar; do echo ${i#*/}; done)
答案4
老问题了,但如果要使用 find,最好只使用 -exec,而不是通过管道传输到 xargs。这样原来的问题就解决了,因为不需要从文件名中删除路径。