web-dev-qa-db-ja.com

「名前のない」ファイルへのアクセス

私は特定のディレクトリでこの状況にあります:

$ ls -al
...
drwxr-xr-x   2 me users         8192 Juni 28 15:27 tmp
-rw-r--r--   1 me users          439 Jan.  3  2013
...

ファイル名がないように見える2番目のエントリにアクセスするにはどうすればよいですか?

4
alk

「nonbreakingspace」という名前のファイルを作成し、名前を変更するためのサンプル実行:

$ ls -1 # Each file on a separate row
testfile
$ touch   # I'm actually writing the character u00a0 here
$ ls -1
testfile
 
$ ls -i # Print inodes
2031842 testfile
2023653  
$ find . -maxdepth 1 -inum 2023653 -exec mv {} hithere \;
$ ls -i1
2023653 hithere
2031842 testfile

その形式のexecは、一致するものが1つしかない場合にのみ意味がありますが、同じファイルへのハードリンクが存在しない限り、iノード番号はそのパーティションで一意である必要があります。最初に引数なしでfindを実行して、複数の一致が得られるかどうかを確認することで、これをテストできます。その場合は、たとえば必要なファイルのみに一致するようにfindパターンを調整します。

名前の変更はファイル名の正確な文字に依存しないため、奇妙なコードポイントを入力しても問題はありません。

7

「ls-1a>/tmp/list」とhexdumpを試して、何かが発生するかどうかを確認します。ファイル名がスペースとタブのシーケンスである可能性があります。 hexdumpがファイル名をスペース(たとえば1スペース)として表示する場合は、「mv\somename」を実行します

 ls -1 
 
 ls -1> /tmp/list
cat/tmp/list

hexdump/tmp /リスト
 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF 
 
 00000000 20 0A {------。
 mv\new {------ 
 ls -1 
 new 
2
jaychris