多次执行输入文件具有不同扩展名的命令
Execute a command multiple times whose input files have different extensions
我试图通过 DirectedLouvain 计算一些定向模块估计。我必须使用一个命令 ./community *.bin -l -1 -w *.weights > *.tree
接受两种不同类型的输入文件(*.bin 和 *.weights)并生成 *.tree 文件。我希望它 运行 超过 1000 个 *.bin 文件和 1000 个 *.weights 文件存储在一个文件夹中。根据@KamilCuk 之前的推荐,我已经尝试过但没有成功:
find -type f -name *.bin -o -name *.weights |
while IFS= read -r file; do
file_no_extension=${file##*/};
file_no_extension=${file_no_extension%%.*}
./community "$file.bin" -l -1 -w "$file.weights" > "$file_no_extension".tree
done
有什么建议吗?
如果扩展名为 .bin
的所有文件都有对应的 .weights
文件,这可能是您应该做的:
#!/bin/bash
find -type f -iname '*.bin' |
while IFS= read -r binfile; do
file_no_extension=${binfile%%.bin}
weightsfile="$file_no_extension".weights
treefile="$file_no_extension".tree
./community "$binfile" -l -1 -w "$weightsfile" > "$treefile"
done
这会将 .tree
文件放置在与 .bin
和 .weights
文件相同的目录中。
我试图通过 DirectedLouvain 计算一些定向模块估计。我必须使用一个命令 ./community *.bin -l -1 -w *.weights > *.tree
接受两种不同类型的输入文件(*.bin 和 *.weights)并生成 *.tree 文件。我希望它 运行 超过 1000 个 *.bin 文件和 1000 个 *.weights 文件存储在一个文件夹中。根据@KamilCuk 之前的推荐,我已经尝试过但没有成功:
find -type f -name *.bin -o -name *.weights |
while IFS= read -r file; do
file_no_extension=${file##*/};
file_no_extension=${file_no_extension%%.*}
./community "$file.bin" -l -1 -w "$file.weights" > "$file_no_extension".tree
done
有什么建议吗?
如果扩展名为 .bin
的所有文件都有对应的 .weights
文件,这可能是您应该做的:
#!/bin/bash
find -type f -iname '*.bin' |
while IFS= read -r binfile; do
file_no_extension=${binfile%%.bin}
weightsfile="$file_no_extension".weights
treefile="$file_no_extension".tree
./community "$binfile" -l -1 -w "$weightsfile" > "$treefile"
done
这会将 .tree
文件放置在与 .bin
和 .weights
文件相同的目录中。