使用 ls -lR 忽略给定的正则表达式
Using ls -lR ignore given REGEX
我正在使用 ls -lR | ...
来获得我想要的输出,但现在我需要一些东西来强制 ls 忽略给定的正则表达式。有可能实现这一目标吗?我找到了 ls -I
和 ls --ignore
但由于某种原因我得到: 非法选项错误 [macOS卡特琳娜 10.15.3]。我需要它在最常用的 shell 上工作(bash、ksh、zsh 等..)
输出
ls -lR | ...
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./NOT_THIS:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
期望输出:
ls -lR IGNORE NOT_THIS | ... something more
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
我尝试使用 sed 实用程序但未能实现,因为我无法 select 文件夹之间的空行,例如:
ls -lR | sed -n '/.\/NOT_THIS/,/[[:space:]]/p'
试试这个:ls -lR -I '*NOT_THIS*'
演示:
:=>ls -1
1.txt
2.txt
a.csv
b.csv
:=>ls -1 -I '*txt'
a.csv
b.csv
:=>
使用 SED
sed '/\.\/NOT_THIS/, /^$/'d
解释:sed '/start/,/end/d'
<-- 这将删除第一个 /<patern>/
和第二个模式之间的所有数据。
^$
<-- 空白行。 ^
-- 记录开始。 $
-- 记录结束
演示:
:=>sed '/\.\/NOT_THIS/, /^$/'d file.txt
ls -lR | ...
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
:=>
我正在使用 ls -lR | ...
来获得我想要的输出,但现在我需要一些东西来强制 ls 忽略给定的正则表达式。有可能实现这一目标吗?我找到了 ls -I
和 ls --ignore
但由于某种原因我得到: 非法选项错误 [macOS卡特琳娜 10.15.3]。我需要它在最常用的 shell 上工作(bash、ksh、zsh 等..)
输出
ls -lR | ...
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./NOT_THIS:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
期望输出:
ls -lR IGNORE NOT_THIS | ... something more
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
我尝试使用 sed 实用程序但未能实现,因为我无法 select 文件夹之间的空行,例如:
ls -lR | sed -n '/.\/NOT_THIS/,/[[:space:]]/p'
试试这个:ls -lR -I '*NOT_THIS*'
演示:
:=>ls -1
1.txt
2.txt
a.csv
b.csv
:=>ls -1 -I '*txt'
a.csv
b.csv
:=>
使用 SED
sed '/\.\/NOT_THIS/, /^$/'d
解释:sed '/start/,/end/d'
<-- 这将删除第一个 /<patern>/
和第二个模式之间的所有数据。
^$
<-- 空白行。 ^
-- 记录开始。 $
-- 记录结束
演示:
:=>sed '/\.\/NOT_THIS/, /^$/'d file.txt
ls -lR | ...
./NOEMPTY:
total 72
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 10.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 15.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 20.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 25.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 40.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 5.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b.c
./THIS_YES:
total 32
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 30.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35 2.c
-rw-r--r--@ 1 makaveli_10 staff 34 Mar 15 09:26 1b copy 35.c
:=>