Сосредоточение списка файлов с помощью функции For loop

Вы загружаете png-файл и выполняете его с помощью perl. Это никогда не сработает. Вам также не разрешено загружать png-файл, поэтому вы фактически выполняете полученную страницу ошибки 403 с помощью perl, что тоже не сработает.

0
27.02.2018, 10:29
1 ответ

Respuesta corta

while IFS=$'\t' read -r old new; do cat folder*/"$old" > merged/"$new"; done <list.tsv

Esto supone que list.tsvcontiene una lista delimitada por tabuladores -de archivos de origen (antiguos )y de destino (nuevos ).

Explicación

  • while IFS=$'\t' read -r old new; FOO; done <list.tsv:esta es una construcción de shell común para leer cada línea de list.tsv, luego hacer FOOen cada línea. En este caso, el separador de archivos de entrada IFSes una pestaña $'\t', es decir, el primer campo de la línea se guarda en $oldy el segundo campo (después de la pestaña )se guarda en $new.
  • cat folder*/"$old" > merged/"$new":concatenar los archivos en folder*/"$old"y escribir esto en merged/"$new". Esto supone que todos los archivos fuente están en folder*, p. nombrado folder1, folder2, etc
  • Como con cualquier secuencia de comandos, sin duda probaría esto antes de ejecutarlo. Puede hacerlo copiando un subconjunto de sus archivos a otro directorio y luego usando una versión corta de su lista de entrada list.tsv. Verifique los resultados y, si está bien, ejecútelo de verdad (¡pero mantenga una copia de seguridad! ).

Notas sobre la solución sugerida

Pensé en escribir algunos comentarios sobre la solución propuesta para aclarar cómo funcionan los distintos comandos. ¡Espero que esto sea útil para su comprensión!

  • listA=( old1 old2 old3 etc.). Esto crea una matriz. La forma de acceder a partes del mismo se muestra aquí . El uso de for i in $listA…solo accederá a la primera entrada, como ha observado (un poco ).
  • for i in a b c. Esto itera sobre a, by c, colocando cada uno en $i. Por ejemplo, intente ejecutar for i in a b c; do echo $i; done. nótese bien. no tiene sentido referirse a $listAdentro del bloque do…done. De manera similar, i=0y ((i=+1))son ​​inconsistentes con el uso de for.
  • ./folder1/$listA. ./es innecesario. .es la carpeta actual, por lo que no hace nada aquí.
  • cat FOO >>. catse concatenará por sí mismo (de ahí el nombre ). No es necesario escribir declaraciones catseparadas que agreguen >>a un archivo. Puede enumerar varios archivos después de cat, p.cat file1 file2 file3 > output_file.
0
28.01.2020, 04:30

Теги

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