Unix TCSH:使用FOREACH无法正常运行GREP结果

时间:2014-03-07 03:42:01

标签: unix foreach grep tcsh

我正在尝试做一个简单的任务。 Grep文本文件中的名称列表,将其提供给foreach循环,并使用它执行某些操作,例如,可以删除或复制文件名。

但我似乎无法将grep的结果输入到foreach的变量中。

foreach key ( `grep -r '*' /nfs/png/disks/png_vlvpe_disk007/tvpv/prod_suite/users/clwong/Pat_Label_Remove_C0_17_17_vrevL2List/vrevL2_append.txt` ) 
rm $key
end

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里的诀窍是用set noglob

禁用文件通配

有关文件列表,例如:

dfarrell% cat files.txt
file1.txt*
file2.txt*
file3.txt*
file4.txt*

您可以使用

对每个文件进行操作
dfarrell% set noglob; foreach file ( `cat files.txt` )  
foreach? unset noglob
foreach? rm -v "$file"
foreach? set noglob
foreach? end
file1.txt*
file2.txt*
file3.txt*
file4.txt*

完成unset noglob

后,您可以重新启用通配符

请注意,我正在输入命令行,这就是你提出foreach?提示的原因。在文件的shell脚本中,您不会键入它,或者以这种方式查看它 - 它来自shell。