У меня есть каталог в папке терминала. Я использую MobaXterm. В этом каталоге находится большое количество файлов. Имена файлов длинные и содержат некоторые недопустимые символы. Пример имени файла:"Три сопредседателя (Индонезия, Либерия, Соединенное Королевство) Группы высокого уровня Генерального секретаря по повестке дня в области развития на период после 2015 года - Media Stakeout-1861343067001.m4a". Я записываю имена файлов в CSV-файл, используя следующую командную строку, и пока это работает.
dir$ find . -type f > names.csv
Но на этот раз вместо одного столбца имя файла разделено на несколько столбцов.
Мне нужно полное имя только в столбце A. Я хочу написать оригинальные имена файлов, включая запятые. Та же команда смогла написать имена файлов с запятыми для моих предыдущих наборов данных, только те имена файлов были короче, чем это.
Как это исправить?
решение1
В Linux GNU find имеет -printf
опцию, которая выводит имя файла в заданном формате; для импорта в CSV можно заключить имя файла в двойные кавычки, например:
find . -type f -printf '"%p"\n'
решение2
CSV означаетЗначение, разделенное запятыми. Когда электронная таблица считывает файл, она интерпретирует запятые как разделители полей. Замените запятые на какой-либо другой разделитель, например, на подчеркивание, стр, таким образом
$ tr ',' '-_' < input.csv | tr -d '"'
При импорте поле 1 не будет разделено.
решение3
Существуют различные разновидности CSV, но решение, совместимое с RFC 4180, с использованием sed:
find . -type f | sed 's/"/""/g;s/\(.\+\)/"\1"/'
Это заменит экземпляры на "
и ""
заключит непустые строки в двойные кавычки.
решение4
Длина имени файла здесь не имеет значения, но используется разделитель по умолчанию импортного движка. Выберите символ, который никогда не используется в именах файлов, и используйте его в качестве разделителя CVS. Предположим, что этот выбор — § (знак раздела). Ваша find
команда будет выглядеть так:
find . -type f -printf '§%p§\n' > names.csv
или если вы хотите получить имя файла без его начальной точки:
find . -type f -printf '§%P§\n' > names.csv
Теперь при импорте CSV-файла укажите § в качестве разделителя.