Answers:
您也可以尝试使用此命令,
for i in $(seq 100 100000); do rm fileName_$i; done
如果文件名按顺序包含数字,它将删除所有文件(范围从100到100000)。
通常,您有几种方法可以实现此目的:
rm fileName_{100..100000}
将由Shell扩展为大约100,000个文件名。如果基本名称是长路径,并且数字足够高,则使用这种方法实际上可能会超过命令行的最大长度。
该for环
for i in $(seq 100 100000); do rm fileName_$i; done
不会遇到这个问题,但是删除文件的方式相对较慢,因为外壳程序必须执行变量替换并启动rm约100,000次。
如果filename_101缺少某些文件,则上述两种方法都可能导致警告。
通常,基于的解决方案find更好,因为它们仅适用于实际存在的文件(在发现过程中)。但是,有一些细微的差异:
find . -name 'fileName_[100-100000]' -exec rm {} \;
还是会推出rm计划约10万次,而替换最后\;通过+将尽量减少子进程数。这两种方法都可能(比-delete几乎不使用)慢一点,后者根本不使用外部命令,而是调用系统调用。
但是,请始终先检查模式是否与您要定位的文件实际匹配:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
因此,在这种情况下,您将删除要保留的文件,并保留应删除的文件。
{x..y}到整个列表。例如,如果您使用echo test{1..3}它,它将被扩展到echo test1 test2 test3然后执行。如您所见,它将打印test1 test2 test3。同样,如果{x..y}没有将参数连接到任何参数,它将仅将数字放在此处。例如,echo test {1..3}将只打印test 1 2 3。