ファイルへのファイルパスの追加

ファイルへのファイルパスの追加

ファイル名のフルディレクトリパスをファイルに入れたいです。

したがって、foo/bar/main.cpp が存在する場合、このパスは main.cpp ファイルの先頭に追加されます。

bashコマンドを助ける人がいますか?

find、exec、xargsメソッドをすべて試しましたが、echoまたはcatを実行すると、ファイル名自体ではなくファイルの内容が提供されます。おそらく答えは、find execまたは他の方法からファイル名を抽出する方法を明確に説明します。

/foo/bar/main.cpp ファイルの期待される出力

///foo/bar
int main ( .... ) {
}

ベストアンサー1

次のスクリプトを使用できます。

#!/usr/bin/env bash

for i; do
    if [ "${i:0:1}" = "/" ]; then
        # Absolute path
        sed -i "1i${i}" "${i}"
    else
        # Relative path
        sed -i "1i${PWD}/${i}" "${i}"
    fi
done

絶対パスが書き込まれる位置引数として、任意の数のファイルを受け入れます。つまり、次のように呼び出すことができます。

./addPath foo/bar.cpp foo/bar/main.cpp /home/user/main.cpp

絶対パスと相対パスの両方を許可し、例に示すようにそれらを混在させることができます。

キャンセル機能はありませんので参考にしてください! :-)

おすすめ記事