我试图在 csh 中运行一行命令,但它不起作用
find . -type d -name "mydir" -exec touch {}/abc.txt \;
此命令在 ksh 中运行良好。
我只是想在所有名为 mydir
的目录中创建空文件 (abc.txt)。任何人都可以帮助我使用 csh 命令来执行此操作吗?
最佳答案
{
和 }
在 ksh 和 csh 中都是元字符,但它们的处理方式不同。
例如,这个:
{foo,bar}/abc.txt
扩展为
foo/abc.txt bar/abc.txt
在两个 shell 中,但在 ksh 中,如果大括号之间没有逗号,则不会对其进行特殊处理,而在 csh 中,无论是否有逗号,它们都会被特殊处理。结果在ksh中
{}/abc.txt
只是 {}/abc.txt
,但在 csh 中它被替换为 /abc.txt
。
解决方法是引用大括号:
find . -type d -name "mydir" -exec touch '{}/abc.txt' \;
关于linux - 在 csh 中运行 unix ksh 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490091/