Shell

刪除文件末尾同名的文件

  • April 1, 2014

刪除文件末尾同名的文件

我的文件夾和子目錄中有很多文件,例如

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.phpandb.x.xc.x.y.x.y(and .php.php)。

ksh93

rm -- *@(.*)\1

遞歸:

set -o globstar
rm -- **/*@(.*)\1

使用 GNU find,遞歸:

find . -regex '.*\(\.[^/]*\)\1' -exec rm {} +

引用自:https://unix.stackexchange.com/questions/120548