ファイル名が 不明 で、ファイルサイズ 0 のファイルについて


**環境**  
CentOS7

**経緯**  
FileZilla を見たら、ファイルサイズ0のファイル「Apr 29 2018」がありました。

**試したこと**

[code]

    $ ls -l
    -rw-rw-r-- 1 hoge hoge     0  4月 29  2018 ?
    
    $ lees ?
    -bash: lees: コマンドが見つかりません
    
    $ cat ?
    
[/code]

* * *

**Q1.このファイル名は何ですか？**

  * ファイル名はない
  * 「？」
  * 「Apr 29 2018」。これは、FileZilla が便宜上こう表示しているだけですか

* * *

**Q2.ファイルサイズ0の内容を確認することは出来ますか？**  
内容が空なので確認することはできない？

* * *

**Q3.ファイルサイズ0のファイルはなぜできるのですか？**  
・ファイルが壊れたら、ファイルサイズ0になる？  
・ファイルサイズ0だとファイルは壊れているが、ファイルが壊れていてもファイルサイズ0とは限らない？

* * *

**Q4.ファイルサイズ0のファイルを削除しても良いですか？**  
ファイルサイズ0のファイルが何かの役に立っていることはあり得ますか？




FTPというプロトコルは元来、人の目で見て判断するものであり、GUIと親和性がありません。[FTPサーバーは思い思いの形式でファイル一覧](https://github.com/ffftp/ffftp/blob/ba3c51b2703af0d1380df1c823e67652cab998ec/filelist.cpp#L108-L504)を返します。FTPクライアントは返された文字列を解析しファイル名らしきものを探して表示しているに過ぎません。  
FileZillaとしては`?`はファイル名でなく`Apr 29 2018`の方がファイル名であろうと判断したに過ぎません。

なお、ファイル名が不明なのではなく、純粋に `?` という名前のファイルが作られていて、`ls`は忠実に出力したに過ぎないと思われます。

2018/04/29にご自身がどのようなコマンドを実行したのかを思い出す必要があります。もしかしたらbashの履歴に残っているかもしれません。

>
[code]

>     $ ls -lb
>     -rw-rw-r-- 1 hoge hoge 0 4月 29 2018 \r
>  
[/code]

ということは **ファイル名**
が`\r`（`\x0D`）１文字の空ファイルです。シェルスクリプトの改行コードが`\r\n`になっており、シェルは`\n`のみを改行コードと認識し何らかのコマンド引数に`\r`が渡された、そしてそのシェルスクリプトを実行したのは2018/04/29だということでしょう。

なお、FTPではプロトコル上、改行コードとして`\r\n`を使用することになっているためファイル名`\r`を認識できなかったのでしょう。




FTPというプロトコルは元来、人の目で見て判断するものであり、GUIと親和性がありません。[FTPサーバーは思い思いの形式でファイル一覧](https://github.com/ffftp/ffftp/blob/ba3c51b2703af0d1380df1c823e67652cab998ec/filelist.cpp#L108-L504)を返します。FTPクライアントは返された文字列を解析しファイル名らしきものを探して表示しているに過ぎません。  
FileZillaとしては`?`はファイル名でなく`Apr 29 2018`の方がファイル名であろうと判断したに過ぎません。

なお、ファイル名が不明なのではなく、純粋に `?` という名前のファイルが作られていて、`ls`は忠実に出力したに過ぎないと思われます。

2018/04/29にご自身がどのようなコマンドを実行したのかを思い出す必要があります。もしかしたらbashの履歴に残っているかもしれません。

>
[code]

>     $ ls -lb
>     -rw-rw-r-- 1 hoge hoge 0 4月 29 2018 \r
>  
[/code]

ということは **ファイル名**
が`\r`（`\x0D`）１文字の空ファイルです。シェルスクリプトの改行コードが`\r\n`になっており、シェルは`\n`のみを改行コードと認識し何らかのコマンド引数に`\r`が渡された、そしてそのシェルスクリプトを実行したのは2018/04/29だということでしょう。

なお、FTPではプロトコル上、改行コードとして`\r\n`を使用することになっているためファイル名`\r`を認識できなかったのでしょう。

