ファイルの末尾から同じ名前のファイルを削除します。

ファイルの末尾から同じ名前のファイルを削除します。

ファイルの末尾から同じ名前のファイルを削除します。

私のフォルダとサブディレクトリには、次のような多くのファイルがあります。

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.xc.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 '{}' \;

関連情報