Как переместить или скопировать список файлов, на которые ссылаются в файле CSV к новой папке

Vim не был разработан для больших файлов. Это имеет определенные функции, которые решительно замедляют пользовательский опыт. Например, это загружает файл в память, которая в основном ограничивает для редактирования файлов, меньших, чем емкость памяти. Кроме того, функции, такие как подсветка синтаксиса, файл подкачки и отмена очень неэффективны с большими файлами и замедляют вещь еще больше. Другая проблема - это vim ожидает не слишком длинные строки. Если файл содержит немного символов новой строки vim становится неприменимым.

Это сказавшее, существует плагины как энергия-largefile, которые изменяют конкретные настройки, чтобы быть более эффективными с большими файлами, но в конце vim никогда не будет мгновенным, когда Вы бросите Несколько ГиБ в него.

Нижняя строка, не использовать vim на больших файлах. Если Вы хотите просмотреть (по контрасту для редактирования) большие файлы, использовать less. Если Вы хотите искать шаблон, ues наклонная черта для запуска поиска шаблон:

/  # forward search
?  # backward search

Если Вы хотите отфильтровать выходное использование амперсанд:

&

Затем запустите непрерывный вывод с помощью shift-f. Можно выйти из непрерывного выходного дисплея с ctrl-c и совершенствовать или отменить шаблон фильтра или запустить поиск.

Для редактирования больших файлов используют инструменты как sed, они эффективны и разработаны для этой самой цели.

2
01.05.2014, 13:54
2 ответа

Поставьте do после расширения параметров, а не раньше. И пропустите $sign внутри расширения и используйте двойные кавычки вокруг расширений, кроме как при присваивании переменной. Например,

while read file
do
  temp=${file%\"}
  temp=${temp#\"}
  cp "foldername/$temp" "foldername/subfoldername"
done < myfile.csv
2
27.01.2020, 21:57

У вас 2 ошибки:

  1. Неправильный синтаксис цикла, do должен быть на 2-й строке
  2. плохой синтаксис замены, знака доллара до i не было нужно

Попробуйте так:

#!/bin/bash

for i in $(cat myfile.csv)
do
  temp="${i%\"}"
  temp="${temp#\"}"

  cp foldername/$temp foldername/subfoldername
done

но, это не получится, если в именах файлов будут пробелы. Скрипт ниже также будет работать с пробелами:

#!/bin/bash

while read i;
do
  temp="${i%\"}"
  temp="${temp#\"}"

  cp "foldername/$temp" "foldername/subfoldername"
done < myfile.csv
3
27.01.2020, 21:57

Теги

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