文件列表,我想忽略來自find
命令文件的列表:忽略查找命令的Linux/Unix
find . \(-name file1-o -name file2 \)
在上面的格式,我必須單獨給文件。我可以將它們放入數組嗎?
文件列表,我想忽略來自find
命令文件的列表:忽略查找命令的Linux/Unix
find . \(-name file1-o -name file2 \)
在上面的格式,我必須單獨給文件。我可以將它們放入數組嗎?
要回答你的問題,不,你不能把文件忽略到一個數組中,並期望有find
知道它們。一個數組是你的shell的工件(我認爲是bash),而find
工具是一個單獨的二進制文件,在你的shell之外。
也就是說,您可以使用數組來生成查找選項。
#!/usr/bin/env bash
a=(file1 file2 file3)
declare -a fopt=()
for f in "${a[@]}"; do
if [ "${#fopt[@]}" -eq 0 ]; then
fopt+=("-name '$f'")
else
fopt+=("-o -name '$f'")
fi
done
echo "find . -not (${fopt[@]})"
毫無疑問,一個更優雅的方式,從第一個文件處理的-o
排除發現{丹尼斯,chepner,伊坦,喬納森,格倫}會指出,但我還沒有喝咖啡還沒有這早上。
find
支持正則表達式。見How to use regex with find command?。 如果你的文件名有某種模式,這可以解決你的問題。
POSIX擴展正則表達式是要走
find . -regextype posix-extended -regex '.*(scriptA|scriptB)[0-9]\.pl'
一個很好的方式,我會在perl
使用File::Find
:
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;
my @skip_names = qw(skip_this_file.txt
not_this_either
);
my %skip = map { $_ => 1 } @skip_names;
sub finder {
next if $skip{$_};
## do everything else.
}
find (\&finder, "/path/to/find_in");
你可以閱讀您的文件名出的文件,或內聯數組。或者使用正則表達式測試。
感謝您的快速響應,將此添加到我現有的腳本更容易 – waiting