Как я могу переименовать каталог с именем, состоящим только из непечатаемых символов

В 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/ 

Как я могу переименовать эти каталоги?

  • Мониторинг процессов в Solaris
  • Два разных IP-адреса для одного интерфейса NIC
  • что такое inode for, во FreeBSD или Solaris
  • Как получить имя хоста вместе с доменным именем?
  • Восстановление открытого файла
  • Команда IPCS для общей памяти и семафора в Solaris, HP-UX и AIX
  • Почему cron перестала обрабатывать команды?
  • Как увеличить загрузку / использование CPU в Solaris 10 для тестирования nagios?
  • 3 Solutions collect form web for “Как я могу переименовать каталог с именем, состоящим только из непечатаемых символов”

    Аналогичный текст как ls -ldb * может быть произведен (ksh, bash, zsh) $'...' , так как это:

     echo $'\0122016\0122016' 

    Это всего лишь куча новых строк (октябрь 012, гекс 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 

    Код C / C ++

     #include<cstdio> int main(){ rename(Old,New); } 

    компилировать

    Reeplace Old and New с использованием котировок \" и двойной обратной косой черты \\

    g++ -O3 -o bin file.cpp -D Old=\"\\0122016\\0122016/\" -D New=\"new\"

    Бег

    ./bin

    Неподтвержденный псевдокод:

     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 
    Interesting Posts

    Несколько туннелей SSH (локальная и удаленная переадресация) через одно master-соединение OpenSSH? Хорошая идея?

    Где отбрасывать библиотеки в соответствии со стандартом иерархии файловой системы

    Нежелательный ctrl + h в файле, сохраненном с выхода пользователя

    Как этот фиктивный вход проник в мои подходящие источники?

    Mutt новых уведомлений по электронной почте в окне tmux

    Есть ли эквивалент addr2line в системе AIX?

    IO Ошибка при rsync при ежедневном резервном копировании

    перенаправление и трубопровод

    Отладка паники ядра в X-сервере

    Как ядро ​​Linux узнает, какой процесс просыпаться во время обработки прерываний?

    Анализ вывода команды df с помощью awk

    Как удалить файл с помощью команды mv?

    Легкий способ создания бессмысленного, дешевого, долговременного процесса?

    Как предотвратить Make от случайного переопределения файлов?

    Съемка с веб-камерой с ноутбуком после ввода неправильного пароля

    Linux и Unix - лучшая ОС в мире.