SunOSには、名前に印刷できない文字のみを含むいくつかのディレクトリがあります。注文する
ls -ldb *
次を返します(一部のスペースは削除されました)
drwxr-xr-x 3 user1 group1 3 Feb 4 18:10 \0122011\0122016\0122016\0122016\0122011\0122011\0122011\0122011\0122011\0122011\0122016\0122011\0122012/
drwxr-xr-x 3 user1 group1 3 Feb 4 11:03 \0122016\0122016/
このディレクトリの名前をどのように変更できますか?
答え1
ls -ldb *
(ksh、bash、zsh)は、$'...'
次のような同様のテキストを生成できます。
echo $'\0122016\0122016'
それは多くの改行(Oct 012、Hex 0x0A)と年です。
使用できるシェルが制限されている場合は、printfを使用してください。
printf '\0122016\0122016'
上記のコードには最後のコードは含まれていません/
。実際には、カーネルにディレクトリ名を指定する必要はありません。
したがって、消去するには、次のようにします。
rmdir "$(printf '\0122016\0122016')"
使用名を変更するには:
mv "$(printf '\0122016\0122016')" newname
他のファイルには以下が必要です。
mv "$(printf '\0122011\0122016\0122016\0122016\0122011\0122011\0122011\0122011\0122011\0122011\0122016\0122011\0122012')" newname
または、もしあればいいえ名前が似ていて文字列が短い他のファイル:
mv "$(printf '\0122011\0122016\0122016\0122016')"* newname
答え2
C/C++ コード
#include<cstdio>
int main(){
rename(Old,New);
}
編む
引用符と二重バックスラッシュの置き換えOld
とNew
使用\"
\\
g++ -O3 -o bin file.cpp -D Old=\"\\0122016\\0122016/\" -D New=\"new\"
走る
./bin
答え3
テストされていない擬似コード:
i=1
for d in *
do
echo "$d"
echo Enter Y to rename the above directory:
read answer
if [ $answer = "Y" ]
then
mv "$d" tempdir${i}
i=$((i+1))
fi
done