删除文件末尾同名文件
我的文件夹和子目录中有很多文件,例如
ajax_hostel_room_master.php.php class_hostel_registration.php.php
ajax_hostel_room_master.php.php.php class_hostel_registration.php.php.php
ajax_hostel_room_shifting.php class_hostel_room_allocation.php
ajax_hostel_room_shifting.php.php class_hostel_room_allocation.php.php
ajax_hostel_room_shifting.php.php.php class_hostel_room_allocation.php.php.php
我想保留 filename.php 并删除其他文件,例如 filename.php.php
答案1
rm -- *.php.php
这将删除所有具有多个 php 扩展名的文件
对于您需要的所有子目录
find /scripts/tmp -name "*.php.php" -exec rm {} +
/scripts/tmp
是我的文件和子目录所在的目录
答案2
要匹配重复扩展名,请使用zsh
:
rm -- *.*.*(e{'[[ $REPLY:t =~ "(\..*)\1$" ]]'})
递归地:
rm -- **/*.*.*(e{'[[ $REPLY:t =~ "(\..*)\1$" ]]'})
这将匹配a.php.php
andb.x.x
和c.x.y.x.y
(and .php.php
)。
和ksh93
:
rm -- *@(.*)\1
递归地:
set -o globstar
rm -- **/*@(.*)\1
对于 GNU find
,递归地:
find . -regex '.*\(\.[^/]*\)\1' -exec rm {} +
答案3
在要删除文件的目录的根目录下尝试此操作:
find . -name "*.php.php*" -exec rm '{}' \;