Нужен сценарий оболочки для копирования файлов с длинными именами и именами

У меня есть каталог файловой системы NTFS, который содержит файлы с короткими и длинными именами, я ввел команду копирования для этой директории, которая будет скопирована в файловой системе Ext2, файлы с короткими именами скопированы без проблем, но файлы с длинными именами были сбой, Я получил ошибку «Имя файла слишком долго», потому что число этих файлов слишком велико. Мне нужен сценарий оболочки для решения проблемы в два этапа:

1-Copy, а затем удалите скопированные файлы с короткими именами (я знаю, что команда move делает это, но я хочу использовать команду копирования)

2 – Удалите от 15 до 20 символов с конца имен оставшихся файлов с длинными именами, после чего я повторю шаги до тех пор, пока все файлы не будут скопированы.

Спасибо.

  • Как достичь переменной косвенности (обратитесь к переменной, имя которой хранится в другой переменной) в tcsh
  • Как grep над переменной
  • Как включить команду Diff в скрипт bash с подсказкой
  • Сценарий оболочки для выполнения сценария оболочки для всех подкаталогов
  • Помогите мне понять, что здесь делает
  • Как я могу получить pid процесса, начатого таким образом
  • Как извлечь строку между двумя \ n в файле
  • для цикла, не работающего для нескольких строк
  • One Solution collect form web for “Нужен сценарий оболочки для копирования файлов с длинными именами и именами”

    Чтобы скопировать и усечь имена файлов на лету, вы можете сделать следующее:

    cd /src && LC_ALL=C pax -rws'|\([^/]\{255\}\)[^/]*|\1|g' ./* /dst/ 

    для усечения до 255 байтовых компонентов пути.

    Обратите внимание, что он может обрезать имя файла в середине символа, если в этих именах файлов есть многобайтные символы.

    Он также обновит цели символических ссылок (хотя я не уверен, что ntfs поддерживает символические ссылки).

    Обратите внимание, что вы можете получить файлы, переписывающие друг друга, если несколько файлов имеют одинаковые первые 255 байт.

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