No está muy claro qué está haciendo su secuencia de comandos y parece estar completamente mal escrito. Debe proporcionar más detalles para averiguar qué es exactamente lo que está mal y qué desea lograr. Supongo que el error proviene de esta línea:
files=$($f | awk -F "_" '{print $3}')
En particular, debes darte cuenta de lo que sucede aquí:
$f | awk -F "_" '{print $3}'
Está ejecutando $f
, que es uno de los archivos directory/*
. Uno de ellos es 0403-006
, y no puedes ejecutarlo.
¿Qué pasa con las variables col1
, col2
, etc.? Los datos leídos de test.txt
están completamente sin usar.
Presente un ejemplo mínimo y completo con datos de entrada y salida esperada, ya que este script no parece sensato incluso si mi suposición es correcta.
Ну вот только проблема с восстановлением данных, не так ли?
Это файловая система, которая знает о метаданных, таких как структура папок и имена файлов и, самое главное, что -где (размер файла, смещение на диске, в случае фрагментации для каждого сегмента данных и т. д. ).
Если файловая система пришла в негодность и вы прибегаете к вырезанию необработанных данных (, что и делают foremost
, photorec
и другие подобные инструменты ), то сохранить имена файлов невозможно.
В лучшем случае вы можете генерировать новые имена файлов из данных, которые вы вырезали (в случае JPEG, на основе данных EXIF, в случае архивов ZIP/TAR внутри есть имена файлов, если вы их распаковываете, файлы кода иногда имеют полезные заголовки о названии и авторе проекта и т. д. ).
Но для любых типов файлов, которые не содержат метаданных о себе, нет имени файла, потому что его знает только сама файловая система.
Хороший резчик файлов сообщит вам, по какому смещению был найден каждый файл,и, возможно, что-то в метаданных файловой системы позволит вам вытащить имя файла для заданного смещения (теоретически возможно, что их может быть более одного, если файл был жестко связан или просто переименован и старые метаданные остались на диске ).
Но для этого требуется, чтобы такие метаданные все еще существовали, и кто-то или что-то могло понять внутреннее устройство конкретной файловой системы, чтобы иметь возможность правильно интерпретировать такие метаданные. Таким образом, в основном, чтобы сохранить исходную структуру папок и файлов, так или иначе, вам нужно как-то исправить саму файловую систему.
Конечно, невозможно получить его из audit.txt
, который вообще не содержит этой информации. Поэтому, если вы не видите в своем audit.txt
что-то, что вы хотите использовать в качестве имени файла, этот ваш ruby-скрипт - тупик. Вам нужен тот, который вытаскивает кролика из шляпы.