有没有办法在bash中“欺骗”文件的文件扩展名以供其他程序使用?我可以考虑做一些shell脚本并制作大量的软链接,但这不是很容易扩展。
让我们假设我有一个我正在尝试使用的程序,它要求输入文件具有特定的文件扩展名,并且没有关闭此检查的方法。
答案 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
)。
通过更多编程,您的脚本可以跟踪它创建的符号链接,如果您愿意,可以在执行命令后对其进行清理。
正如您在问题中所述,这假定命令不能被强制接受不同的扩展名。
您可以毫不费力地创建一个包装器脚本来替换相关命令,创建符号链接,调用命令以及自动清理它。