在 java 中使用 basename 命名输出文件
Using basename to name output file in java
我有一个目录的递归结构,其中包含一些 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 命令似乎不起作用。我做错了什么?
这是一个 zsh 方法,因为它是这样标记的。
for f in **/*.foo(.); print -- java ... -o $f:r.bar $f
如果您认为 print --
看起来不错,请将其移除。
(.)
表示仅文件。 :r
表示删除 .foo
扩展名。将路径操纵器记住为 "erth" for extension/remove/tail/head.
会很有帮助
还有 zmv
和 -p
选项来调用您的 java 命令。
我有一个目录的递归结构,其中包含一些 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 命令似乎不起作用。我做错了什么?
这是一个 zsh 方法,因为它是这样标记的。
for f in **/*.foo(.); print -- java ... -o $f:r.bar $f
如果您认为 print --
看起来不错,请将其移除。
(.)
表示仅文件。 :r
表示删除 .foo
扩展名。将路径操纵器记住为 "erth" for extension/remove/tail/head.
还有 zmv
和 -p
选项来调用您的 java 命令。