У меня есть список некоторых имен / идентификаторов, и в том же каталоге у меня есть исходные файлы из этого списка. Я пытаюсь найти, как я могу перемещать исходные файлы в другую папку, но только те, которые появляются в списке?
Итак, мой файл list / txt выглядит так:
2mtz.pdb
2lbq.pdb
2kad.pdb
и мои исходные файлы имеют точно такой же идентификатор, но мне нужно найти способ перемещения только тех из списка.
В Unix, если мы стараемся, имена файлов могут иметь всевозможные неожиданные символы. По возможности мы обычно избегаем использования пробелов: «?», «\ N», «(», «*» и т. Д. В именах файлов и каталогах.
Если ваши имена файлов не имеют «пробелов» и других странные символы, попробуйте:
mv $(cat list/txt) destination/dir/
Если список находится в файле /tmp/list.txt, вы можете сделать следующее:
cat /tmp/list.txt | xargs mv -t /app/dest/
или короче:
xargs mv -t /app/dest/ < /tmp/list.txt
Является комбинацией команд:
mv -t /app/dest/
Чтобы переместить все аргументы SOURCE в DIRECTORY с помощью опции -t или --target-directory = DIRECTORY
И с помощью команды xargs, которые выполняют командные строки из стандартного input, но в этом случае каждая строка на /tmp/list.txt, потому что мы сделали перенаправление, используя кредит <
для этого другого Q & amp; A https://unix.stackexchange.com/questions/115734/ въезд файла-по-список-в-файл-с-выводной пробельным
Вот два примера, которые используют цикл while.
В следующем примере содержимое файла с именем list будет перенаправлено в цикл while, где каждая строка будет read как значение переменная $FILE_NAME, которая будет использоваться в качестве аргумента в команде mv.
while IFS= read -r FILE_NAME; do mv "$FILE_NAME" "/dest/dir/"; done < /path/to/list
В следующем примере команда cat выведет содержимое файла с именем list. Выход будет передан в контур while, где каждая строка будет read в качестве значения переменной $FILE_NAME, которая будет использоваться как аргумент в команде mv.
cat /path/to/list | while IFS= read -r FILE_NAME; do mv "$FILE_NAME" "/dest/dir/"; done
ИМО с использованием перенаправления - лучший способ. Ниже приведено более подробное объяснение этого использования while: while цикл обрабатывает только первую запись команды ssh.
В Unix, если мы стараемся, имена файлов могут иметь всевозможные неожиданные символы. По возможности мы обычно избегаем использования пробелов: «?», «\ N», «(», «*» и т. Д. В именах файлов и каталогах.
Если ваши имена файлов не имеют «пробелов» и других странные символы, попробуйте:
mv $(cat list/txt) destination/dir/
Если список находится в файле /tmp/list.txt, вы можете сделать следующее:
cat /tmp/list.txt | xargs mv -t /app/dest/
или короче:
xargs mv -t /app/dest/ < /tmp/list.txt
Является комбинацией команд:
mv -t /app/dest/
Чтобы переместить все аргументы SOURCE в DIRECTORY с помощью опции -t или --target-directory = DIRECTORY
И с помощью команды xargs, которые выполняют командные строки из стандартного input, но в этом случае каждая строка на /tmp/list.txt, потому что мы сделали перенаправление, используя кредит <
для этого другого Q & amp; A https://unix.stackexchange.com/questions/115734/ въезд файла-по-список-в-файл-с-выводной пробельным
Вот два примера, которые используют цикл while.
В следующем примере содержимое файла с именем list будет перенаправлено в цикл while, где каждая строка будет read как значение переменная $FILE_NAME, которая будет использоваться в качестве аргумента в команде mv.
while IFS= read -r FILE_NAME; do mv "$FILE_NAME" "/dest/dir/"; done < /path/to/list
В следующем примере команда cat выведет содержимое файла с именем list. Выход будет передан в контур while, где каждая строка будет read в качестве значения переменной $FILE_NAME, которая будет использоваться как аргумент в команде mv.
cat /path/to/list | while IFS= read -r FILE_NAME; do mv "$FILE_NAME" "/dest/dir/"; done
ИМО с использованием перенаправления - лучший способ. Ниже приведено более подробное объяснение этого использования while: while цикл обрабатывает только первую запись команды ssh.