Похоже, что 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));
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 ls
tambié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_all
en 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 vanila2
correspondiente 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_combined
con 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/*_all
o similar.
Итак, у вас есть файлы с одинаковыми именами в двух каталогах, и где оба файла присутствуют, чтобы их объединить?
for file in dir1/*; do
otherfile="$(basename "$file")"
if [[ -r dir2/"${otherfile}" ]]; then
cat "$file" dir2/"$otherfile" >> combined/"$otherfile"
fi
done