使用basename命名java

时间:2015-06-06 13:14:49

标签: java find xslt-1.0 filenames zsh

我有一个包含一些foo文件的目录的递归结构,我希望使用XSLT 1.0样式表将其转换为bar个文件。我有:

dir
|-- subdir
|   |-- file1.foo
|   |-- file2.foo
|   |-- file3.foo

我想获得:

dir
|-- subdir
|   |-- file1.foo
|   |-- file1.bar
|   |-- file2.foo
|   |-- file2.bar
|   |-- file3.foo
|   |-- file3.bar

要捕获没有扩展名的文件的基本名称,我尝试过:

$ find . -type f -exec java -jar C:/saxon6-5-5/saxon.jar -o $(basename {} .foo).bar {} stylesheet.xsl \;

$ find . -type f -exec java -jar C:/saxon6-5-5/saxon.jar -o `basename {} .foo`.bar {} stylesheet.xsl \;

两者结果相同:

dir
|-- subdir
|   |-- file1.foo
|   |-- file1.foo.bar
|   |-- file2.foo
|   |-- file2.foo.bar
|   |-- file3.foo
|   |-- file3.foo.bar

似乎basename命令无效。我能做错什么?

1 个答案:

答案 0 :(得分:1)

这是一种zsh方法,因为它标记了它。

for f in **/*.foo(.); print -- java ... -o $f:r.bar $f

如果您认为它看起来不错,请移除print --

(.)仅说文件。 :r表示删除.foo扩展名。将路径操纵器记住为" erth"用于扩展/移除/尾部/头部。

还有zmv -p选项来调用你的java命令。