Файлы списка рекурсивно в Linux CLI с путем относительно текущего каталога, макс. 250 символов

Я не уверен, безопасно ли использование гостевых дополнений,

Я не уверен в документации того ни одного и Whonix, отражает это. Безопасны ли они или не могли бы быть хорошим вопросом для security.stackexchange.com [также связываясь с предыдущими операторами о (в) безопасности].

но это, кажется, единственный способ передать файлы.

Хотя нет никакого простого решения, существует несколько путей, таких как ssh.

Я не могу даже добраться скопировать/вставить для работы между хостом и рабочей станцией.

Даже когда гостевые дополнения установлены, буфер обмена, совместно использующий, все еще отключен из соображений безопасности. В документации Whonix говорится:

Буфер обмена, совместно использующий, отключен по умолчанию в настройках Virtual Box VM для Whonix-шлюза и Whonix-рабочей-станции. Включите его только временно в случае, если Вам действительно нужен он. Перейдите к настройкам машины VirtualBox-> Общий-> Усовершенствованный->, Общий Буфер обмена-> Включает-> хорошо.

2
23.05.2017, 15:40
2 ответа

С помощью GNU найти:

find . -regextype posix-extended ! -regex '.{253,}' ! -type d

(что печатает префикс ./, который не входит в 250-ой счетчик).

With zsh:

setopt extendedglob # if not already in your ~/.zshrc
printf '%s\n' **/*~?(#c251,)(D^/)

Это все пути рекурсивно (**/*), включая скрытые ((D)), но не (^) пути из директории типа (/), за исключением (~) тех, которые совпадают с ? (#c251,), то есть содержащие 251 или более символов.

POSIXly:

find . ! -path "$(printf %253s | tr ' ' '?')*" ! -type d

(обратите внимание, что в Unix нет ничего, что гарантировало бы, что имена файлов состоят из допустимых символов. Кроме решения zsh, эти решения могут также сообщать о файлах, путь к которым содержит последовательности байтов, которые не образуют допустимых символов (добавление -путь '*' может помочь в исключении этих символов). Если вы хотите, чтобы число байтов совпадало с числом символов в вашей локали, вы можете исправить локаль в C с помощью export LC_ALL=C).

4
27.01.2020, 21:52

POSIXly:

$ find . -type f -exec sh -c '
    for f do
      [ "${#f}" -le 252 ] &&
      printf "%s\n" "$f"
    done
' sh {} +

POSIX определил ${#parameter} как длину в символах параметра значения, но в некоторых оболочках поведение может отличаться. bash, zsh, yash считают символы, dash считают байты. ksh93 имеет случайную ошибку, в зависимости от ее реализации.

3
27.01.2020, 21:52

Теги

Похожие вопросы