我需要一个shell脚本来删除没有扩展名的文件(如.txt
或任何其他扩展名)。例如,我找到了一个名为imeino1
的文件(没有.txt
或任何其他东西),我想通过shell脚本删除它们,所以如果有任何开发人员知道这个部分,请解释怎么做它
答案 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 {} +
不匹配的文件(不是目录,块设备......)(因此不包含*.*
)并执行.
命令方便地大量这样的文件名。