LINUX.ORG.RU

копировать папки с названиями на кириллице в нерусифицированной консоли


1

1

Консоль не русифицирована, mc нет(может другие файлменеджеры есть), ставить софт нельзя. Задача попасть в папку с кириллистическим названием и скопировать отуда файлы



Последнее исправление: lasim (всего исправлений: 1)

На правах теории: собрать каталог при помощи tar и перенести куда надо.

IPR ★★★★★
()
Ответ на: комментарий от IPR

Проблема та же, указать tarу имя каталога, какой нужно копировать. Да и не подходит этот способ

lasim
() автор топика

смотришь inode каталога:

ls -i

затем подставляешь номер inode в в комманду find:

find . -inum ЗДЕСЬ_НОМЕР -exec cp {} КУДА_КОПИРОВАТЬ \;

можешь завернуть всё в for.

hope13 ★★★
()

если папка 1, то cd *

Если не 1, то пишешь скрипту, куда русские букы вводишь в hex виде

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 1)

Была подобная задача когда-то, извратился ls + сортировки + tail/head -n1 и передал сие в пайп для cp.

можно сделать еще ls > в файл и далее вычистить из него лишнее и использовать потом снова в пайп.

BaBL ★★★★★
()
Ответ на: комментарий от hope13

затем подставляешь номер inode в в комманду find

спасибо! век живи... о_О жирного я слона не приметил.

BaBL ★★★★★
()
Ответ на: комментарий от lasim

find -print0 |xargs -0 cd должно зайти в твой кривой каталог если других рядом с ним не будет, дальше по аналогии.

anonymous
()

Задача попасть в папку с кириллистическим названием и скопировать отуда файлы

1. Граф. режим есть? Мышкой замечательно выделяются и копируются в командную строку даже не кириллические имена.
2. Сделай симлинки. Что-то типа такого (пишу по памяти), доработать напильником вкусу:

#!/bin/sh
I=0
find -type d | while read A ; do
  cp -s "$A" "$I"
  let "I++"
done
3. Сделать свой маленький фм:
#!/bin/sh
if [[ "$1" == "-h" ]]; then
  echo "Usage:"
  echo "$0 - list directories"
  echo "$0 N - go to directory N"
  echo "$0 -h - this help"
  return
fi
I=0
find -type d | while read A ; do
  echo "$I - $A"
  if [[ "$I" == "$1" ]] ; then
    echo "Entering..."
    cd "$A"
    return
  fi
  let "I++"
done

P. S. Не помню как в find ограничить поиск только текущим каталогом...

Kroz ★★★★★
()
Ответ на: комментарий от x3al

Самый оптимальный способ. Спасибо

lasim
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.