Как переместить большое количество файлов в исходные каталоги?

Возможно, вы действительно хотите:

while IFS='|' read -r i j rest <&3; do
  {
    printf '%s\n' "something with $i and $j"
  } 3<&-
done 3< "$INPUTFILE"

Но использование цикла оболочки для обработки текста часто является неправильным путем .

Здесь звучит так, будто вам просто нужно:

awk -F '|' '{print $1 ":" $2}' < "$INPUTFILE"

Теперь в качестве ответа на вопрос в заголовке для оболочки с для циклов, принимающих более одной переменной, у вас есть zsh (похоже, вы уже используете синтаксис zsh, не цитируя свои переменные или не отключая подстановку подстановки при разделении подстановки команд):

$ for i j in {1..6}; do echo $i:$j; done
1:2
3:4
5:6

Или в более короткой форме:

for i j ({1..6}) echo $i:$j

Эквивалент с оболочками POSIX:

set -- 1 2 3 4 5 6
## or:
# IFS='
# ' # split on newline
# set -f # disable globbing
# set -- $(awk ...) # split the output of awk or other command
while [ "$#" -gt 0 ]; do
  echo "$1:$2"
  shift 2
done

0
07.02.2016, 23:42
1 ответ

Переустановка всей системы была бы излишней, если бы вы выполняли команду как пользователь без полномочий root. Даже если вы не можете / не хотите восстановить все настройки и файлы немедленно, было бы намного проще создать другого пользователя в системе и работать от имени этого пользователя. Вы по-прежнему можете перемещать настройки, файлы данных и т. Д. Из старой учетной записи по мере необходимости. (Однако имейте в виду, что вам нужно будет просмотреть файлы для вашего нового пользователя, когда вы их переместите. Но есть большая вероятность, что многие из ваших 150000 файлов представляют собой такие вещи, как кеш миниатюр браузера, все равно регенерирует.)

2
29.04.2021, 00:18

Теги

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