フォルダからシンボルファイルを削除し、サブディレクトリはそのままにする方法は?

フォルダからシンボルファイルを削除し、サブディレクトリはそのままにする方法は?

次のように、ファイル、シンボリックリンク、およびサブディレクトリを含むフォルダがあるとします。

files: file1, file2, file3, file4
symbolic links: link1-->file2, link2-->file3
subdirectories: dir1, dir2

file1、file3、file3、file4、link1、link2を削除したいです。しかし、dir1とdir2は変更せずにそのままにしてください。

すべてのファイル名をカバーするパターンはありませんfile*。上記のファイル名は単なる例であり、実際にはさまざまな名前があります。

答え1

findパラメータと一緒に使用できますtype

find . -maxdepth 1 -type f -exec rm -f {} \;

このセクションを削除してテスト実行を実行して、削除-exex rm -f {} \;するファイルを確認できます。

答え2

使用するのは簡単な方法です。

$ rm ./*

ここでは再帰的削除()を使用しないため、-r親ディレクトリのファイル(隠しファイルを除く)のみを削除する必要があります。

答え3

Bashを使用(シンボリックリンクを無視):

for file in *; do [[ -f $file ]] && rm -- "$file"; done

答え4

sudo mkdir a b c d e

sudo touch a/1 b/2 c/3 d/4 e/5 e/a e/b   
ls                  
a  b  c  d  e  pqr  xyz

cd a/         
ls   
1

cd ../e/     
ls      
5 a b

cd /var/warehouse/abc/  
find . -type f ! -path "./a*" ! -path "./b*"        
./d/4   
./e/a   
./e/b   
./e/5   
./c/3

sudo find . -type f ! -path "./a*" ! -path "./b*" -exec rm -f {} \;

関連情報