Возможно, это не самое элегантное решение, но оно обеспечит точный вывод, который вы указали, включая пробелы:
#!/bin/bash
function CreateList()
{
col="$1"
shift
cut -d ',' -f $col $@ | sed -r '1d ; s/^[ ]+|[ ]$// ; y/\n/ /; s/[ ]+$/\n/' | xargs echo | sed 's/ /, /'
}
for f in list2.csv list1.csv
do
echo -n "${f//.csv}: "
CreateList 2 "$f"
done
Вывод:
list2: fname3, fname4
list1: fname1, fname2
FSlint hará esto por usted, al menos en su GUI. También tiene variantes de línea de comando -:
/usr/share/fslint/fslint/findbl /usr/bin
pero eso no parece tener una opción para eliminar los enlaces rotos.
Sin embargo, ni siquiera necesita una herramienta específica para esto, su sistema ya tiene una herramienta que es capaz de eliminar enlaces simbólicos rotos:find
. Consulte ¿Cómo puedo encontrar enlaces simbólicos rotos para obtener más detalles? puede tomar un comando find
dado allí y agregarle -delete
para eliminar los enlaces (después de verificar la salida...):
find /usr/bin -xtype l -delete