首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在list...how中的每个路径上运行命令来执行循环吗?

在list...how中的每个路径上运行命令来执行循环吗?
EN

Stack Overflow用户
提问于 2018-01-23 23:05:38
回答 1查看 40关注 0票数 0

我们需要将目标文件夹的列表设置为777。

请告诉我,这类循环有一个更干净、更聪明的方法,而不必吐出一个文件,然后从文件中读取。:)

代码语言:javascript
运行
复制
#!/bin/bash

inputFile="/private/tmp/.swatchTempFolderList.txt"

echo '/Applications/Adobe\ Photoshop\ CC\ 2018/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2017/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2015.5/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2015/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2014/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC/Presets/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2018/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2017/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015.3/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2014/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2018/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2017/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015.3/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2014/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ InDesign\ CC\ 2018/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2017/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2015/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2014/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC/Presets/Swatch\ Libraries' > "$inputFile"

while read f; do
    if [ -e "$f" ]; then
        echo "Setting 777 for $f..."
        chmod 777 "$f"
    else
        echo "Skipping, since $f does not exist..."
    fi
done < "$inputFile"

exit 0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 23:12:42

可以将所有文件转储到数组中:

代码语言:javascript
运行
复制
arr=("file1" "file2" "file3")
chmod -- 777 "${arr[@]}"

如果您有大量的文件,您可能会遇到Argument list too long错误。在这种情况下,您可以这样做:

代码语言:javascript
运行
复制
printf '%s\0' "${arr[@]}" | xargs -0 chmod -- 777

或者使用一个好的旧for循环:

代码语言:javascript
运行
复制
for file in "${arr[@]}"; do
    chmod -- 777 "$file"
done

当然,您可以直接遍历文件:

代码语言:javascript
运行
复制
for file in "file1" "file2" "file3"; do
    chmod -- 777 "$file"
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48412316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档