「バックスペース文字」の名前を指定するために正しい用語を使用しなかった場合は申し訳ありません。
名前にバックスペースがあるように見える2つのファイルを含むディレクトリを整理したいと思います。ディレクトリを一覧表示すると、次のようになります。
ls -la
わかりました:
-rwxrwxrwx 1 guy guy 729 Jun 26 2007 z_regular.mk
-rwxrwxrwx 1 guy guy 1 Sep 7 2016
-rwxrwxrwx 1 guy guy 3220 Sep 27 2
誤って「バックスペース文字」を使ってファイル名を入力したため、名前が表示されなくなったようです。
最後の2つのファイルの名前をどのように変更できますか?
私はそれらを何と呼ぶべきかわかりません。ファイル名を16進数または他の形式で表示するオプションはありますかls
?コマンドで最新のファイル名をどのように使用できますかmv
?私はAIX Unix TLS v6を使用しています。
編集する:
これらのファイルはdel
それぞれ2文字と4文字です。
ls -lb
与えられた
-rwxrwxrwx 1 guy guy 1 Sep 7 2016 \177\177
-rwxrwxrwx 1 guy guy 3220 Sep 27 2 \177\177\177\177\177
しかし、解決策を見つけました名前のないファイルを削除する方法AIXの状況では機能しません。
これまで、私は成功せずに次のことを試しました。
l>ls -l $'\0177\0177'
$\0177\0177 not found
l>ls -l '\0177\0177'
\0177\0177 not found
l>ls -l '\177\177'
\177\177 not found
答え1
構文(ksh93では、現在、、、、FreeBSDを$'\ooo'
含むほとんどの最新のBourne様シェルにあります)zsh
bash
mksh
sh
基準echo
(Cおよび他のほとんどの言語と同様に)8進エスケープとは反対の構文です。したがって、\
次に最大3つの8進数が続くことがあります$'\177'
。$'\0177'
それは次のようになります$'\017'7
。だから:
ls -ld $'\177\177'
mv $'\177\177' better-name
(\177
別名^?
ASCIIDEL
文字は次のとおりです。いいえバックスペース^H
///BS
文字\10
)
答え2
提案された重複項目の一番下で解決策が見つかりました。
ノード番号の識別
ls -lbi 25553 -rwxrwxrwx 1 guy guy 1 Sep 7 2016 \177\177 25559 -rwxrwxrwx 1 guy guy 3220 Sep 27 2 \177\177\177\177\177
その後、次から戻るときに移動できます
find
。find . -inum 25553 |xargs -I{} mv {} recovered.x find . -inum 25559 |xargs -I{} mv {} recovered.y