66658


**環境**  
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のファイルが何かの役に立っていることはあり得ますか？


CC BY-SA 4.0
2020-05-16T00:52:21.747
66654
2020-05-16T23:17:19.347
7886
question
centos
ファイル名が 不明 で、ファイルサイズ 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`を認識できなかったのでしょう。


CC BY-SA 4.0
2020-05-16T03:07:10.223
66658
2020-05-16T23:17:19.347
2020-06-17T08:14:45.997
-1
4236
66654
answer


コメント欄でも触れられていますが、サイズが `0` バイトのファイルは簡単に作成できます。  
そして、サイズが 0 なら中身は何も無いと考えるのが自然でしょう。

削除しても問題ないかは、単一のファイルだけ見せられても第三者が正確に判断するのは難しいと思います。質問文では `hoge` で伏せられていますが、
**ファイルのオーナーやファイルの保存場所なども加味して** 判断する必要があるでしょう。

  * 一般ユーザーのホームディレクトリ以下にあるファイルであるなら、なんらかのコマンド操作ミスで作成してしまった可能性があります。こちらであれば削除しても大抵は問題ないと考えれれます。

  * 例えば `/etc/` 以下など管理者権限が必要なディレクトリ配下に作られたファイルであるなら、少し慎重に原因を追求する必要があります。(いきなり削除するのではなく、一時的にリネームなどしておき再度同じファイルが作成されるのか等)


CC BY-SA 4.0
2020-05-16T07:25:14.417
66665
2020-05-16T07:25:14.417
3060
66654
answer