次のように、ファイル、シンボリックリンク、およびサブディレクトリを含むフォルダがあるとします。
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 {} \;