"欺骗" Bash中的文件扩展名

时间:2014-08-06 17:13:35

标签: linux bash

有没有办法在bash中“欺骗”文件的文件扩展名以供其他程序使用?我可以考虑做一些shell脚本并制作大量的软链接,但这不是很容易扩展。

让我们假设我有一个我正在尝试使用的程序,它要求输入文件具有特定的文件扩展名,并且没有关闭此检查的方法。

2 个答案:

答案 0 :(得分:2)

您可以使用必需的扩展名生成fifo,并将cat任何其他文件类型放入其中。因此,如果您的疯狂程序需要查看以.funky结尾的文件,您可以执行此操作:

mkfifo file.funky
cat someotherfile > file.funky &
someprogram file.funky

答案 1 :(得分:1)

为要拥有特定扩展名的每个文件创建符号链接,然后将符号链接的名称传递给命令。

例如,假设您的文件名称为*.foo,并且您需要使用.bar的扩展名来引用它们:

for file in *.foo ; do
    ln -s $file _$$_$file.bar
done

我在每个符号链接名称前加上_$$_,以避免与现有文件名冲突的可能性(如果ln -s file.foo file.bar已经存在,您不想做file.bar)。

通过更多编程,您的脚本可以跟踪它创建的符号链接,如果您愿意,可以在执行命令后对其进行清理。

正如您在问题中所述,这假定命令不能被强制接受不同的扩展名。

您可以毫不费力地创建一个包装器脚本来替换相关命令,创建符号链接,调用命令以及自动清理它。