如何编写一个oneliner来删除给定目录中除具有给定名称的文件以外的每个文件?

时间:2019-05-17 16:39:34

标签: linux

我正在尝试编写一个单件套(在Windows笔记本电脑上运行的ubuntu上),该文件将删除目录floop中的每个文件,但具有给定名称的文件file keep me除外。

这是我已经得到的:

for foo in /floop;
do
    if [ ! $foo == "file keep me" ];
    then
        rm -r $foo;
    fi;
done

我得到的错误是:

rm: cannot remove '/floop': No such file or directory

此刻我正在floop/目录本身中尝试它,因为当我在homedir中尝试它时,它删除了整个文件夹

1 个答案:

答案 0 :(得分:3)

使用find

find /path/to/folder -maxdepth 1 -type f ! -name 'name of file' -delete

PS:for循环的正确版本为:

for foo in /floop/* ; 
do
    # Skip the file you want to keep       
    if [ "$foo" = "/floop/file keep me" ] ;
    then
        continue
    fi

    # Skip directories
    if [ -d "$foo" ] ;
    then
        continue
    fi

    # Remove other files
    rm "$foo"
done