用于删除没有扩展名的文件的Shell脚本

时间:2014-11-18 22:32:10

标签: file shell

我需要一个shell脚本来删除没有扩展名的文件(如.txt或任何其他扩展名)。例如,我找到了一个名为imeino1的文件(没有.txt或任何其他东西),我想通过shell脚本删除它们,所以如果有任何开发人员知道这个部分,请解释怎么做它

5 个答案:

答案 0 :(得分:1)

没有发现,没有管道,只是普通的旧壳:

#!/bin/sh
for file in "$@"; do
  case $file in
  (*.*) ;; # do nothing
  (*) rm -- "$file";;
  esac
done

使用文件列表作为参数运行。

答案 1 :(得分:0)

假设您的意思是UNIX(类似)shell,您可以使用rm命令:

rm imeino1

答案 2 :(得分:0)

for file in $(find . -type f | grep -v '\....$') ; do rm $file 2>/dev/null; done

删除当前目录中未以.???结尾的所有文件。

答案 3 :(得分:0)

rm -rvf `ls -lrth|grep -v ".txt"`

ls -lrth|grep -v ".txt"应位于后引号`…`内(或更好,位于$(…)内)。

如果其他文件名不包含"。"然后,您可以提供

,而不是为.txt提供grep -v

rm -rvf `ls -lrth|grep -v "."`

这将删除路径中没有扩展名的所有目录和文件。

rm -vf `ls -lrth|grep -v "."`不会删除目录,但会删除所有没有扩展名的文件(如果文件名不包含字符"。")。

答案 4 :(得分:0)

要删除名称中不包含点的当前目录中或下面的所有文件,无论名称是否包含空格或换行符或任何其他尴尬字符,都可以使用符合POSIX 2008的版本{{1} (例如,使用GNU find或BSD find):

find

这会查找名称与find . -type f '!' -name '*.*' -exec rm {} + 不匹配的文件(不是目录,块设备......)(因此不包含*.*)并执行.命令方便地大量这样的文件名。