空の名前のファイルをどのように作成しますか?


9

方法はわかりませんが、ファイル名が空のファイルを作成しました。そこに空白があったのではないかと思います(最後に理由を説明します)。

chaouche@karabeela /mnt/ubuntu/storage $ ls
total 352K
drwx------  3 chaouche chaouche 4.0K Feb 12 11:00
drwxr-xr-x  4 chaouche chaouche 4.0K Apr 14 23:13 AUDIO
drwxr-xr-x  5 chaouche chaouche 4.0K Jul 20 22:25 BACKUPS
-rw-r--r--  1 chaouche chaouche 310K Jun 15 13:00 cv_yassine_chaouche_2012.pdf
drwxr-xr-x  2 chaouche chaouche 4.0K Jun 10 22:16 Mageia-3-i586-DVD
drwxr-xr-x  5 chaouche     1001 4.0K Oct 12  2012 MUSIQUE
drwxr-xr-x 15 chaouche chaouche 4.0K Oct 27  2012 PARISVIII
drwxr-xr-x  6 chaouche chaouche 4.0K Jun 12 18:33 SABAYON
drwxr-xr-x  5 chaouche chaouche 4.0K Jun 15 13:23 SIFTECH
drwxr-xr-x  5 chaouche chaouche 4.0K Feb  6 15:11 TOILES
drwxr-xr-x  4 chaouche chaouche 4.0K Jul 17 17:21 VIDEOS
chaouche@karabeela /mnt/ubuntu/storage $

#linuxでファイルを削除する方法を尋ねると、他のすべてのファイルを移動してからタブ補完を使用するよう提案されたため、非常に興味深い動作が得られました。

# with tab completion
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 45M
-rwxr-xr-x  1 chaouche chaouche  34M Jan 16  2013 inkscape-0.48.4-1-win32.exe
-rwxr-xr-x  1 chaouche chaouche 8.6M Feb  4 11:42 mypaint-1.0.0-win32-installer.exe
-rwxr-xr-x  1 chaouche chaouche 2.7M Jan 17  2013 pdftkb_setup.exe

# without tab completion, wrote "/" by hand
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 212K
-rw-r--r--   1 root root    0 Apr 15  2012 1
drwxr-xr-x   2 root root 4.0K Dec  9  2012 bin
drwxr-xr-x   3 root root 4.0K Jun 15 12:10 boot
-rw-------   1 root root  74K Jul  1  2011 dead.letter
drwxr-xr-x  19 root root 4.2K Jul 20 20:14 dev
drwxr-xr-x 117 root root  12K Jul 20 21:30 etc
drwxr-xr-x   4 root root 4.0K Jun 12 18:40 home
drwxr-xr-x   2 root root 4.0K Jun  8  2011 initrd
drwxr-xr-x  20 root root  12K Dec  9  2012 lib
drwx------   2 root root  16K Jun  7  2011 lost+found
drwxr-xr-x   4 root root 4.0K Jul  3 01:56 media
drwxr-xr-x   9 root root 4.0K Apr 15 00:06 mnt
drwxr-xr-x   8 root root 4.0K Jun 30 23:19 opt
dr-xr-xr-x 198 root root    0 Jun 15 13:10 proc
drwxr-x---  28 root root 4.0K Jul 20 21:42 root
drwxr-xr-x   2 root root  12K Dec  9  2012 sbin
drwxr-xr-x   2 root root 4.0K Apr  3  2011 srv
drwxr-xr-x  12 root root    0 Jun 15 13:10 sys
-rw-r--r--   1 root root    0 Jun 12 18:40 thisismageia
drwxrwxrwt  69 root root  36K Jul 20 22:04 tmp
drwxr-xr-x  14 root root 4.0K Nov  6  2011 usr
drwxr-xr-x  18 root root 4.0K Jul  2  2011 var
chaouche@karabeela /mnt/ubuntu/storage $

ファイル名に空白が含まれている場合、タブキーを押すと\ ""に置き換えられますが、そうではありませんでした。


5
ファイルではなくディレクトリであり、3つのファイルを保持しているようです。
Bananguin 2013

2
空のファイルを除いてすべてを移動したディレクトリをまだ保持していると仮定すると、どうしたらどうなりますfile *か?
ジョセフ

いいえ、残念ながらmvコマンドでファイルの名前を変更しました。
ychaouche 2013


2
この質問はその質問の重複ではありません。  この質問は、名前に印刷文字が含まれていない、誤って作成されたファイル(またはディレクトリ)を処理するための実用的なテクニックに関するものです。  その別の質問は、必要に応じてそのようなファイルを作成する方法についての理論的、仮想的、とりとめのない議論であり、余波に対処することについては何も述べていません。
G-Manは 'Reinstate Monica'

回答:


14

空の名前のファイルを作成することはできません。あなたが持っているのは、名前が完全に空白または印刷できない文字で構成されているファイルです。

ファイル名を正確に確認するには、を実行しLC_CTYPE=C ls -bます。これは、すべての空白文字または印刷できない文字を8進エスケープで置き換えます。たとえば、名前が単一のゼロ幅スペースであるファイルは、としてリストされ\342\200\213ます。

このファイルは、適切な名前のファイルを除外するグロブで分離できます。たとえば、名前が文字で始まらないファイルを一覧表示してみることができます。

chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*

オプションを忘れないでください。これにより、その内容ではなくディレクトリ自体-dlsリストされます。

ファイルの名前を適切な名前に変更する必要があります。シェルの完了に依存するか、このファイルのみに一致するグロブを使用できます。

mv [^A-Za-z]* windows-programs

5

名前にスペースまたは非表示文字のみが含まれるディレクトリである可能性があります。また、「。」以外のエントリが1つしかないようです。と「..」。これが、最初のコマンドの出力の2列目に「3」が表示される理由です。次のコマンドを使用するstatと、いつでもディレクトリの名前を出力できますstat -f "'%N'" *。印刷できない場合は、それをパイプに入れcat -vたりod -c、実際の内容を確認したりする必要があります。

これを削除するには、おそらく実行する必要がありますrmdir -- 'dirname'( 'dirname'をディレクトリの名前に置き換えます。印刷できない名前が含まれている場合は、グロブを使用する必要があるかもしれません)。 'そのディレクトリに降りて、cd -- 'dirname'その内容を調べる必要があります。

rm -rfディレクトリの名前付けの問題は簡単に失敗するので、絶対に使用しないことをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.