ар кандай папкалардагы окшош аталыштагы бир нече файлдарды unix командасын колдонуп кантип бириктирсе болот?

Похоже, что debugfs еще не поддерживает печать субсекундной части (верхние 30 бит i_ x time_extra) отметки времени в формате на основе asctime . Из http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/debugfs/debugfs.c :

if (is_large_inode && large_inode->i_extra_isize >= 24) {
        fprintf(out, "%s ctime: 0x%08x:%08x -- %s", prefix,
            inode->i_ctime, large_inode->i_ctime_extra,
            time_to_string(inode->i_ctime));
        fprintf(out, "%s atime: 0x%08x:%08x -- %s", prefix,
            inode->i_atime, large_inode->i_atime_extra,
            time_to_string(inode->i_atime));
        fprintf(out, "%s mtime: 0x%08x:%08x -- %s", prefix,
            inode->i_mtime, large_inode->i_mtime_extra,
            time_to_string(inode->i_mtime));
        fprintf(out, "%scrtime: 0x%08x:%08x -- %s", prefix,
            large_inode->i_crtime, large_inode->i_crtime_extra,
            time_to_string(large_inode->i_crtime));

1
14.02.2018, 23:10
2 ответа

Tengo el presentimiento de que es posible que haya ejecutado su ciclo más de una vez, y dado que usa el operador de redirección >>, que agrega datos, sus archivos de resultados crecen cada vez.

En cambio (y aquí estoy evitando usar lstambién, vea la discusión en " ¿Por qué *no *analiza `ls `? " por razones):

for name in vanila1/*; do
    base_name=${name##*/}

    if [ -f "vanila2/$base_name" ]; then
        cat "$name" "vanila2/$base_name" >"all_combined/$base_name"
    else
        printf 'No file in vanila2 corresponds to "%s"\n' "$name" >&2
    fi
done

La sustitución de variable ${name##*/}transforma un nombre de ruta como vanila1/MB.2613.007_0021.ED4_KS1A29-7_338_allen solo MB.2613.007_0021.ED4_KS1A29-7_338_all, es decir, elimina todas las cosas antes de /, incluida la barra inclinada (, este es el componente del nombre de archivo del nombre de ruta, o " el nombre base" ). Esto puede ser reemplazado por $(basename "$name").

Si hay un archivo en vanila2correspondiente al nombre tomado de vanila1, los dos se concatenan y se colocan en el directorio all_combined. Si no, hay un mensaje de diagnóstico sobre este hecho.

Al usar >en lugar de >>, cualquier archivo existente en all_combinedcon el mismo nombre se reemplazará en lugar de agregarse.


Si tiene otros archivos o directorios en vanila1, es posible que desee modificar el patrón vanila1/*en el ciclo a algo que coincida solo con los archivos que le interesan, por ejemplo vanila1/*_allo similar.

1
28.01.2020, 00:39

Итак, у вас есть файлы с одинаковыми именами в двух каталогах, и где оба файла присутствуют, чтобы их объединить?

for file in dir1/*; do
   otherfile="$(basename "$file")"
   if [[ -r dir2/"${otherfile}" ]]; then
       cat "$file" dir2/"$otherfile" >> combined/"$otherfile"
   fi
done
-1
28.01.2020, 00:39

Теги

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