隠しファイルを除くディレクトリ内のすべてのファイルを削除するには?

隠しファイルを除くディレクトリ内のすべてのファイルを削除するには?

コンテンツを入れる前に出力ディレクトリを整理しています。.gitkeepファイルを使用してgitの出力ディレクトリを追跡したいのですが、rm -rf "$OUT_DIR"bashスクリプト内の行はファイルを削除し続けます。

ディレクトリの内容を削除し、隠しファイルを保存したり、そのファイルを保存したりする方法はありますか.gitkeep

ベストアンサー1

bashデフォルトでは、ファイルは完全にドットとして表示されないため、隠しファイルを除くすべての項目を削除するには、次bashのようにしますrm

rm *

出力例:

~/tmp$ ls -la
total 8
drwxrwxr-x  2 user user 4096 giu 11 20:00 .
drwxr-xr-x 21 user user 4096 giu 11 08:26 ..
-rw-rw-r--  1 user user    0 giu 11 20:00 .1
-rw-rw-r--  1 user user    0 giu 11 20:00 2
-rw-rw-r--  1 user user    0 giu 11 20:00 3
-rw-rw-r--  1 user user    0 giu 11 20:00 4
-rw-rw-r--  1 user user    0 giu 11 20:00 5
~/test$ rm *
~/tmp$ ls -la
total 8
drwxrwxr-x  2 user user 4096 giu 11 20:00 .
drwxr-xr-x 21 user user 4096 giu 11 08:26 ..
-rw-rw-r--  1 user user    0 giu 11 20:00 .1

.gitkeepを除くすべての項目を削除するには、bashドットファイルのグロービングを有効にし、次を使用しますrm

shopt -s dotglob
rm !(.gitkeep)

出力例:

~/tmp$ ls -la
total 8
drwxrwxr-x  2 user user 4096 giu 11 20:19 .
drwxr-xr-x 21 user user 4096 giu 11 08:26 ..
-rw-rw-r--  1 user user    0 giu 11 20:19 1
-rw-rw-r--  1 user user    0 giu 11 20:19 2
-rw-rw-r--  1 user user    0 giu 11 20:19 3
-rw-rw-r--  1 user user    0 giu 11 20:19 4
-rw-rw-r--  1 user user    0 giu 11 20:19 5
-rw-rw-r--  1 user user    0 giu 11 20:19 .gitkeep
-rw-rw-r--  1 user user    0 giu 11 20:19 .hidden
~/tmp$ shopt -s dotglob
~/tmp$ rm !(.gitkeep)
rm: cannot remove ‘.’: Is a directory
rm: cannot remove ‘..’: Is a directory
user@user-X550CL:~/tmp$ ls -la
total 8
drwxrwxr-x  2 user user 4096 giu 11 20:20 .
drwxr-xr-x 21 user user 4096 giu 11 08:26 ..
-rw-rw-r--  1 user user    0 giu 11 20:19 .gitkeep

おすすめ記事