Shell
刪除文件末尾同名的文件
刪除文件末尾同名的文件
我的文件夾和子目錄中有很多文件,例如
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
rm -- *.php.php
這將刪除所有具有多個 php 副檔名的文件對於您需要的所有子目錄
find /scripts/tmp -name "*.php.php" -exec rm {} +
/scripts/tmp
是我的文件和子目錄所在的目錄
要匹配重複的副檔名,請使用
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 {} +