Как найти все пути не совместимыми с Windows?

Для использования функций исполнения роли sudo (это принимает значение по умолчанию к пользовательскому корню) необходимо использовать-u опцию как это:

sudo -u agupta ls ~agupta

Кроме того, если agupta находится в Дочерней группе, чтобы сделать это необходимо выполнить sudo под sudo:

sudo -u agupta sudo cat /etc/sudoers
6
28.05.2014, 01:01
2 ответа
[1178720]Пути с зарезервированными именами/символами:[12217]Тест:[12218]Пути, которые идентичны при игнорировании регистра ([1179250]не работает с путями, содержащими новые строки[1179251]):[12219]Тест: [12220]Пути длиннее, чем [1179252]MAX_PATH[1179253] (260 символов):[12221]Тест:[12222]
3
27.01.2020, 20:30

Для решения на Perl можно использовать модуль Win32::Filenames.

http://search.cpan.org/~bch/Win32-Filenames-0.01/lib/Win32/Filenames.pm

Простая программа, использующая этот модуль:

#!/usr/bin/env perl

use strict;
use warnings;

use Win32::Filenames qw(validate sanitize);

while ( my $filename = shift ) {
    printf( "checking filename %s\t", $filename );

    if ( validate($filename) ) {
        print("ok.\n");
    }
    else {
        printf( "failed, try this instead: %s\n", sanitize($filename) );
    }
}

Вы вызываете ее с одним или несколькими именами файлов в командной строке:

$ ./check.pl '<a>' 'hi?' '"right"' 'pipe|me'
checking filename <a>   failed, try this instead: -a-
checking filename hi?   failed, try this instead: hi-
checking filename "right"       failed, try this instead: -right-
checking filename pipe|me       failed, try this instead: pipe-me

Для целой файловой иерархии:

$ find . -exec basename {} \; | xargs ./check.pl
-1
27.01.2020, 20:30

Теги

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