我有一个名为lib的文件夹。 在那个文件夹中有一些文件。 我想获取以.jar结尾的文件的所有名称,并将它们连接成一行,用空格分隔。 我根本不需要path名。
我试过这个:
ls lib/*.jar | xargs
和输出是
lib/file1.jar lib/file2.jar
但是我想要得到的是
file1.jar file2.jar
我怎样才能做到这一点?
我也试过找,但我得到同样的问题
find lib -name *.jar | xargs
而另一个find lib -maxdepth 1 -name *.jar -printf '%f\n' | xargs find lib -maxdepth 1 -name *.jar -printf '%f\n' | xargs
%f File's name with any leading directories removed (only the last element).
只是为了表明你可以用不同的方式实现:如果你使用bash,你可以这样做:
for i in lib/*.jar; do echo ${i#*/}; done|xargs
要么
echo $(for i in lib/*.jar; do echo ${i#*/}; done)
这对我来说很有效,虽然看起来应该有一个更简单的(即不那么讨厌和更漂亮)的方式:
$ ls lib / *。jar | xargs -n 1 basename | xargs的
来自coreutils的basename是一个选项。
find lib -maxdepth 1 -name *.jar -exec basename {} \; | xargs
公然从马克·瓦格纳 ( Mark Wagner)撕掉,但没有额外的电话给xargs。
find lib -maxdepth 1 -name *.jar -printf '%f '