鱼壳:全部删除除

问题描述:

使用鱼,如何删除除某些文件(或目录)以外的目录的内容。类似于bash中的rm !(file1|file2),但是更加恐怖。鱼壳:全部删除除

鱼没有这种功能 - 这是问题#1444

你可以做这样的事情

rm (string match -rv '^file1$|^file2$' -- *) 

注意,这将在与他们的换行符的文件名失败。

或者你可以做的丑陋:

set -l files * 
for file in file1 file2 
    if set -l index (contains -i -- $file $files) 
     set -e files[$index] 
    end 
end 
rm $files 

应该工作无论什么文件名包含。或者,正如在该问题中提到的那样,您可以使用find,例如,

find . -mindepth 1 -maxdepth 1 -type f -a ! \(-name 'file1' -o -name 'file2' \)