小编Cas*_*Cas的帖子

使用 xargs 和变量

嘿,我有一个问题。

\n

这是我正在使用的命令(在 的位置echo $file是一个不同的命令。我简化了它):

\n

find /home/cas/plex-media/series/ -type f -name "*" ! -name "*.srt" -print0 | sort | xargs -0 -n1 -I{} file={} && echo $file

\n

它说这file={}不是一个命令,这是真的,因为它是一个变量。我需要每次将该变量设置为输出的一行,就像 xargs 对命令所做的那样。但我需要它来填充变量,然后为排序输出的每一行使用该变量运行该命令。

\n

例子:

\n

作为输入(又名排序输出):

\n
/home/cas/plex-media/series/Pok\xc3\xa9mon/Season 1/Pok\xc3\xa9mon - S01E01 - Pok\xc3\xa9mon - I Choose You!.mp4\n/home/cas/plex-media/series/Pok\xc3\xa9mon/Season 1/Pok\xc3\xa9mon - S01E02 - Pok\xc3\xa9mon Emergency.mp4\n/home/cas/plex-media/series/Pok\xc3\xa9mon/Season 1/Pok\xc3\xa9mon - S01E03 - Ash Catches a Pok\xc3\xa9mon.mp4 \n
Run Code Online (Sandbox Code Playgroud)\n

我希望 xargs 每次执行它:

\n
file=/home/cas/plex-media/series/Pok\xc3\xa9mon/Season 1/Pok\xc3\xa9mon - S01E01 - Pok\xc3\xa9mon - I Choose You!.mp4 …
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts environment-variables

5
推荐指数
1
解决办法
7938
查看次数

如何仅删除文件中紧随其后的重复行

假设我有以下文件:

$ cat test.txt
a
-----
b
-----
-----
c
-----
-----
-----
d
-----
e
-----
-----
Run Code Online (Sandbox Code Playgroud)

现在我想删除所有-----, 但前提是它们相互重复。所以结果应该是这样的:

a
-----
b
-----
c
-----
d
-----
e
-----
Run Code Online (Sandbox Code Playgroud)

我试过了grep -Pvz -- "-----\n-----",但这没有用。

command-line text-processing

3
推荐指数
1
解决办法
241
查看次数

当名称包含“/”和“'”时创建文件夹

mkdir我正在根据变量构建文件路径(并对其进行处理):

mkdir "$root_folder/$title ($year)"
Run Code Online (Sandbox Code Playgroud)

我遇到了 $title 为 的情况9/11: Inside the President's War Room。这/是一个问题,因为 mkdir 会将其解释为文件夹路径。所以我想将 all 替换/\/,以便 mkdir 从字面上理解它,而不是认为它是一条路径。名称中'的 也带来了问题。所以我也想全部替换'\'但这比我想象的要难。

/我的最终目标是按照字面解释这些文件夹的方式制作文件夹'。我已经尝试过的一些事情:

title=$(echo "$title" | sed -e "s|'|$(echo "\\")\'|g")
${title/\//\\/}
#---
title=$(echo "$title" | sed -e "s|'|$(echo "\\")\'|g" -e "s|/|\\/|g")
$title
#---
mkdir "$root_folder/'$title ($year)'"
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts sed

1
推荐指数
1
解决办法
59
查看次数